1

我正在尝试为编译器项目优化其他人的程序,但我有几个问题。

该程序将一块内存设置为只读,然后根据以前未知的输入对其进行写入。然后它捕获被调用的 SIGSEGV,存储页面地址,然后使内存页面可写。通过这种方式,它可以跟踪哪些页面被“弄脏”。这允许程序避免存储千兆字节的不必要空间。

我的主要问题是什么样的命中导致然后捕获 SIGSEGV 会降低性能?这将真正帮助我确定我改变程序的一些想法是否会有所帮助,或者它们是否真的会让事情变得更糟。

理想情况下,我将能够通过使用巧妙的编译技术来避免使用 SIGSEGV 方法,但我想首先确定当前方法的效率如何。

谢谢!

4

1 回答 1

2

处理偶尔出现的页面错误很可能比您想到的“聪明的编译技术”更有效,无论这些技术可能是什么。

当然,唯一确定的方法是测量两者。

PS 对于一些数字,请参阅https://stackoverflow.com/a/10227511/367273

于 2012-11-30T20:35:24.827 回答