0

Lost Programming Skillsに関する記事を読んで、著者はこのチャットを持ち出します。

私:どのくらいの馬力が必要ですか?
SE:わかりません。
私:見てみましょう、メインループには何行のコードがありますか?
SE:10,000。
私:何語?
SE:Fortran
Me:わかりました。これは、Fortranの1行あたり約10行のマシンコードなので、ループあたり100,000命令です。ループは1秒間に何回実行されますか?
SE:1/20秒ごと。
私:わかりました。つまり、20 x 100,000 = 2mops(当時のどの速度よりも速かった)です。これを考え直したほうがいいかもしれません。

それは私に不思議に思います、現代語の数は何ですか、Rubyは言いますか?どうやって知るのですか?

4

4 に答える 4

0

コードの一部の実行にかかる時間を決定するという点では、Fortran ではもはや実際には機能しません! これを Fortran 90 で書くと、次のようになります。

SUBROUTINE foo(x, y)
  IMPLICIT NONE
  REAL, DIMENSION(:), INTENT(IN) :: x
  REAL, DIMENSION(:), INTENT(OUT) :: y
  y = EXP(x)
END SUBROUTINE foo

配列y = EXP(x)のサイズxy. 同じことは、ベクトル割り当てを使用する言語にも当てはまります。

于 2011-08-16T19:46:32.620 に答える
0

X=" C# " については、 Faster Managed Code: Know What Things Cost from Microsoft を参照してください。(特定の)現代の言語は、実際にハードウェアに触れる前に大幅に最適化されていると言われています。

于 2012-09-12T12:26:46.103 に答える
0

チャットでは、CPU パフォーマンスを推定しようとしています。CPU のパフォーマンスとループの実行時間がわかっている場合は、ループごと、次に行ごとの CPU コマンドの数を取得できます。チャットでの計算は正確ではありません。ルビでも同様の不正確な計算を行うことができます。Fortran の 1 行が 10 個の CPU コマンドであると言うのは間違っていることに注意してください。

Ruby でループにかかる時間を見積もります。ループ時間に CPU パフォーマンス (1 秒あたりの操作数) を掛けます。1秒あたりの操作を取得します。ループ内の行数で 1 秒あたりの操作を分割します。それがあなたのループの価値です。

于 2012-09-12T12:19:10.163 に答える
0

私は正確なノーがあるとは思わない。「言語xの場合、コンパイルされたバイナリにはソースコード行ごとにy行があります」と言っています。しかし、それでも知りたい場合は、大きなノーを取ることができます。コンパイルされたコードと対応するソース コードを比較し、ソース コード行ごとの平均を見つけます。任意のバイナリ エディタでバイナリを開いて、生成される行数を確認できます。たとえば。Ollydbg

于 2011-08-16T18:35:17.910 に答える