-2

プログラムで奇妙なエラーが発生しました。ヘッダー ファイルが原因でプログラムの速度が低下しています。ヘッダー ファイルを空のコード (つまり : main() {}) でテストすると、その空のコードを実行するのに 40 秒かかります。

ヘッダー ファイル .h

#include "stdafx.h" 
#include <string>

#ifndef LZ_H
#define LZ_H

extern int e,i;
extern std::string dic[1000000];
void init();

#endif

関数ファイル .cpp

#include "lz.h"
#include "stdafx.h"
#include <string>

std::string dic[1000000];
int i=0;
int e=0;
std::string cstr(char c)                            
{  
    return std::string(1,c);  
}

void init()
{        
    for (e=0;e<=255;e++) dic[e]=cstr(e);   
        e=e-1;        
}

メインファイル .cpp のテスト

#include "lz.h"  
void main() {}

結果: 40 秒。このような奇妙なエラーに直面したことはありません。

4

1 に答える 1

13

100 万個の文字列のグローバル宣言を .cpp ファイルに入れることで、プログラムの開始時に 100 万個の文字列オブジェクトを作成するコードをコンパイラに強制することになります。これが速度低下の原因です。

配列の最初の 256 要素のみを使用しているため、サイズを 256 に変更します。

于 2012-09-26T15:02:56.687 に答える