1

コンパイラプロジェクト用に他の誰かのプログラムを最適化しようとしていますが、いくつか質問がありました。

このプログラムは、メモリのブロックを読み取り専用に設定し、以前は不明だった入力に基づいて書き込みを行います。次に、呼び出されたSIGSEGVをキャッチし、ページアドレスを格納してから、メモリページを書き込み可能にします。このようにして、どのページが「汚れた」かを追跡できます。これにより、プログラムはギガバイトの不要なスペースを保存することを回避できます。

私の主な質問は、どのようなヒットが発生し、SIGSEGVをキャッチするとパフォーマンスが低下するかということです。これは、プログラムを変更するための私のアイデアのいくつかが役立つかどうか、またはそれらが実際に事態を悪化させるかどうかを判断するのに本当に役立ちます。

理想的には、巧妙なコンパイル手法を使用することでSIGSEGVメソッドの使用を回避できますが、現在のメソッドがどれほど非効率的であるかを最初に判断したいと思います。

ありがとう!

4

1 に答える 1

2

ときどき発生するページ フォールトを処理する方が、考えている「巧妙なコンパイル手法」よりもはるかに効率的である可能性が非常に高くなります。

もちろん、確実にする唯一の方法は、両方を測定することです。

PSいくつかの数字については、https://stackoverflow.com/a/10227511/367273を参照してください

于 2012-11-30T20:35:24.827 に答える