何となく Blog by Jitta
Microsoft .NET 考

目次

Blog 利用状況
  • 投稿数 - 761
  • 記事 - 18
  • コメント - 37042
  • トラックバック - 222
ニュース
  • IE7以前では、表示がおかしい。div の解釈に問題があるようだ。
    IE8の場合は、「互換」表示を OFF にしてください。
  • 検索エンジンで来られた方へ:
    お望みの情報は見つかりましたか? よろしければ、コメント欄にどのような情報を探していたのか、ご記入ください。
It's ME!
  • はなおか じった
  • 世界遺産の近くに住んでます。
  • Microsoft MVP for Visual Developer ASP/ASP.NET 10, 2004 - 9, 2011
広告

記事カテゴリ

書庫

日記カテゴリ

ギャラリ

その他

わんくま同盟

同郷

 

2010年7月22日

今年度から、組み込み Linux で仕事をすることになりました。と思ったら、先月中から Windows アプリケーション作成のヘルパーに突っ込まれました。いや、「作りながら仕様が決まっていく」ってのは、精神衛生上、良くないです。私にとっては。

そんな中、メインの仕事で、「標準の memcpy は遅いから、(32ビット CPU なので)4バイトずつ転送するように作り直して」と、指示されました。

え?まさか?標準のライブラリの方が、私なんかが作るより速いでしょ?

とか思いながら、実機ではデバッグ環境がないので、Visual Studio 上でコードを書き、テストして、計ってみます。やっぱり、標準の方が速い。それを実機用にコンパイルし直し、実機で計ると…

書き直した方が速い!

何でやねん?

Microsoft による実装を見ました。アセンブリが読めません。代わりにコメントを読むと、SSE2 が使える環境では、SSE2 を使います。そうでなければ、転送先が4の倍数なら4バイトずつ、そうでなければ1バイトずつ転送する。となっていました。

次。Linux も見ます。アーキテクチャによる memcpy が定義されていないなら、1バイトずつ転送するようになっていました。じゃ、アーキテクチャによる実装は?PowerPC のアセンブリは、さっぱりわかりません。しかし、IBM のエンジニアが書いているらしいので、それくらいの工夫はされているように思います。

ということは、開発環境が参照するライブラリがヘボいってこと?まさかなぁ?

posted @ 18:11 | Feedback (88)