1

OK、ここに私の問題があります:

  • 私は非常に複雑なプロジェクトに取り組んでおり、スピードとパフォーマンスが非常に重要です - 多くのビットいじりや低レベルのものがあります (あなたが知る必要がある特定のものがあるかどうか私に尋ねるかもしれません)
  • 私はMacを使用しています
  • clang ++を使用してコンパイルおよびリンクしています

Apple clang version 4.0 (tags/Apple/clang-421.0.60) (based on LLVM 3.1svn)

私が現在使用しているすべての最適化フラグは-O3(正直なところ、予想外のブーストが得られたので、それ以上は調べませんでしたが、さまざまなフラグを使用している他のプログラムにまだ気づいています...ちょっと迷った…)。

他に考慮すべきことはありますか?もしそうなら、何?


EDIT : (使用-O4してみましたが、エラーが発生しました。なぜこれが起こっているのでしょうか?)

0  0x10be24280  __assert_rtn + 144
1  0x10be89659  ld::tool::HeaderAndLoadCommandsAtom<x86_64>::copyEntryPointLoadCommand(unsigned char*) const + 169
2  0x10be8853c  ld::tool::HeaderAndLoadCommandsAtom<x86_64>::copyRawContent(unsigned char*) const + 1084
3  0x10be7da56  ld::tool::OutputFile::writeAtoms(ld::Internal&, unsigned char*) + 598
4  0x10be79c14  ld::tool::OutputFile::writeOutputFile(ld::Internal&) + 564
5  0x10be74963  ld::tool::OutputFile::write(ld::Internal&) + 147
6  0x10be248ef  main + 1263
7  0x10be13234  start + 52
A linker snapshot was created at:
    /tmp/myapp-2013-00-31-150316.ld-snapshot
ld: Assertion failed: (_mode == modeFinalAddress), function finalAddress, file /SourceCache/ld64/ld64-133.3/src/ld/ld.hpp, line 657.
clang: error: linker command failed with exit code 1 (use -v to see invocation)
4

1 に答える 1

0

明らかなこと (コンパイル オプション: O3、lto、およびデバッグ フラグを使用しない) を行った後、プログラムを高速化するための手順を次に示します。

1) プロフィール。プロファイリング後、どのセクション/モジュールを調べる必要があるかがわかります。

2) 計測器/ベンチマーク。クリティカル セクションの周りにタイミング コードを配置します。

3) 実際にコードを変更してみて、遅いか速いかを確認してください。最大の原因: 不適切なアルゴリズムまたはデータ構造。malloc/new の過度の使用。

于 2013-01-31T13:34:39.620 に答える