Navigation Log - なびろぐ -
2000/05/22

...X680x0 spirit inside...

この日記はGNSで生成しています。
この日記の画像はOPTPiX webDesigner Ver.4で生成しています。

hauN
Go amazon.co.jp

■ご注文リストから■ [一覧]
■Amazonギフト券■ [購入]
QNAP(キューナップ) TS-431P 専用OS QTS搭載 デュアルコア1.7GHz CPU 1GBメモリ 4ベイ ホーム&SOHO向け プライベートクラウ []
QNAP(キューナッ...
Amazonほしい物リスト


2000/05/22 (月) 晴時々曇

strlen()

_ さて、速いのはどちら? いやもちろんCPUやコンパイラの実装によって全く結果が異なるのは当然として。


int test_1( char *p )
{
    return strlen(p1);
}

int test_2( char *p )
{
    int l = 0;
    do { l++; } while (*p++);
    return l-1;
}

_ VC++6.0 on Pentiumだとtest_2()のほうがtest_1()の約半分の時間で終了する。VC++だとstrlen()はccがbuilt-in展開してしまうようだが、このコードがなかなか遅い・・・^^;。8086の頃なら*1VC++のコードのほうが速かったんだろうけど・・・。

*1: repプレフィクスでサーチするコードを吐くが、repはパイプラインを止めてしまうせいかかなり遅いらしい。蛇足だが、VC++ビルトインコードよりtest_2()をinline化したほうがコードサイズが小さくなる。

_ MC68000系とかの「-1のロードが0のロードと同時間で行えるCPU」では、l=-1で初期化してreturn(l)で返したほうがコードが稼げますな。86系だと同じ。

_ 技術革新でバカバカしくなりつつあるとはいえ、たまにはこういうチマチマした稼ぎ技術のカンを戻しておかないと・・・特に今回のなんかは簡単に速度向上が見込める話につながるわけだし*2

*2: こんなもんで稼がないといけないようなプログラムはそうそうないはずだけど。:-)


[URL] [View Log()] [Trackback]
Name: Comment:



メールはこちらへ...[後藤浩昭 / Hiroaki GOTO / GORRY / gorry@hauN.org]

「表紙へ戻る」
「会議室」 「最新版」 「なびろぐindex」 「GNSソースを読む」