MapReduceフレームワークを使用してGoogle App Engineで作業(この場合はMD5ブルートフォーザ)を行っていくつかの実験を行っています。コードはGoogle App Engine内で非常にゆっくり実行されます
私もちょうど
https://github.com/jordan-thoms/Hash/blob/f982956f41313cd4fe3b5105aee21ea11bd3af16/src/nz/net/thoms/hash/mapreduce/HashMapper.javaのみ毎秒約4,000のハッシュを(これは、単一の呼び出しがマップする内部時間で処理します。このコード開発サーバーを使用して、コードは非常にゆっくりとGAE内で実行され、問題を抱えています()内にはGoogleアプリエンジンのapiが全く使用されていません)。
コードを外に出してスタンドアロンで実行しました - https://github.com/jordan-thoms/Hash/blob/f982956f41313cd4fe3b5105aee21ea11bd3af16/src/nz/net/thoms/hash/StandaloneTest.java、そのバージョンは1秒あたり100万を超えます。それは遅く実行されている中央ループです。これは、そのコードのどれもgoogleアプリケーションエンジンとは関係がないため、奇妙です。
私はGoogle Appエンジンコードでプロファイラーを実行しようとしましたが、便利なものは何も見つかりませんでした。checkRestricted()などの呼び出しが多かったようです。私は、セキュリティマネージャを削除しようとした
でも、この単純なコード:同じの開発者モードでのサーブレット内部400msのオーバー
int i;
for (i=0; i< 1000000; i++) {
i += 2;
i += (int) Math.sin(i * (i + (int) System.currentTimeMillis()));
}
long enda = System.currentTimeMillis();
System.out.println("took " + (enda - starta) + " i:" + i);
117ミリ秒で実行し、私は通常のプログラムでそれを置けば、とで、プロセッサ。
(興味深いことに、マッパーだからたくさん速い。生産はGoogle App Engine上で毎秒約60,000行わハッシュを取得しますが、スタンドアロンのプログラムに比べてまだ非常に遅い)
私は実際にはわかりませんが、何か他のものをチェックする前に、GAEが使用するJIT(および関連するオプション)とスタンドアロンコードは何を使用していますか?なぜなら、おそらくそれがあなたを助けてくれるのを知っていたからです:-)また、生産GAEとスタンドアロンの間の15の違いの一部(おそらくすべてではありません)は、あなたのマシンは、各アプリケーションに与える有効なCPUスピードよりも高速です。開発サーバーの場合、生のスピードはおそらくGoogleにとって優先事項ではありません! –
ありがとうございました - 私はそれぞれのプロセスを見るためにvisualvmを使いましたが、GAEサーバーのカスタムjitオプションを見ることができず、両方ともホットスポット20.6-b01を使用しています。私は見なければならない他の場所がありますか? – Jords
私は生産GAEオプションを意味しました。彼らは良い最適化を使用していると思っていましたが、あなたが良く使っていたと知っていたすべてのために。彼らが使っているものを文書化しているかどうかは分かりませんが、何か特別なことをしていないのであれば、私はすぐにそれらが何倍も遅くなるとは思わないでしょう。私はそれが優先事項だと思ったように、開発パフォーマンスを困惑させようとはしませんでした。だから、彼らが計測器でいっぱいの開発者コードを詰め込んだとしても、それについて何もできないかもしれません。 –