在C ++中捕获SIGSEGV的成本

时间:2012-11-30 20:32:57

标签: c++ compiler-construction sigsegv

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

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

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

理想情况下,我将能够避免使用聪明的编译技术来使用SIGSEGV方法,但我想确定当前方法的效率是多么低效。

谢谢!

1 个答案:

答案 0 :(得分:2)

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

当然唯一可以确定两者的方法。

P.S。有些数字,请参阅https://stackoverflow.com/a/10227511/367273