Factor/最適化データ構造データ構造を適切に選択することは、非常に重要です。 たとえば、ループ内でシーケンスを構築する場合、 複数のシーケンスを分離するときは、サブシーケンス操作ではなくスライスを使うと、パフォーマンスを向上できます。たとえば、要素が百万個の配列に対して 静的スタック効果Factor コードを最適化するための第一歩は、コードが最適化コンパイラによってコンパイルされるようにすることです。ワードが最適化されるのは、そのワードが静的スタック効果を持つ場合かつその場合に限られます。ワードが静的スタック効果を持つかどうかをチェックするには、次のようにします。 [ my-word ] infer. これが真であることをアサートするユニットテストは、次のように定義できます。 \ my-word must-infer 高水準オプティマイザ次のツールを使うと、ワードが高水準オプティマイザによってどのように処理されるか調べることができます。 USE: compiler.tree.debugger
\ foo optimized.これで、ジェネリックディスパッチが除去されるかどうか、汎用算術演算がマシン語演算に変換されるかどうか、どのワードがインライン化されるのかを知ることができます。 クォーテーションも [ 100 [ ] times ] optimized. 高水準コンパイラに対しては、ヒントと、上の出力に影響する inline 宣言を指定することができます。 低水準オプティマイザワードが低水準オプティマイザによってどのように処理されるかを調べるには、次のようにします。 USE: compiler.cfg.debugger
\ foo test-mr mr.ディスアセンブリ最終的にどのようなコードが生成されるかを見るには、 ワードのディスアセンブルは、x86 では
その他のアドバイス
This revision created on Tue, 1 Sep 2009 20:49:06 by slava |
|
|
All content is © 2008 by its respective authors. By adding content to this wiki, you agree to release it under the BSD license. |
|