我正在尝试为编译器项目优化其他人的程序,我有几个问题。
该程序将内存块设置为只读,然后根据以前未知的输入写入内存块。然后它捕获被调用的SIGSEGV,存储页面地址,然后使内存页面写入启用。通过这种方式,它可以跟踪哪些页面被“弄脏”。这允许程序避免存储千兆字节的不必要空间。
我的主要问题是什么样的打击然后捕获SIGSEGV导致性能损失?这将真正帮助我确定我的一些改变程序的想法是否会有所帮助,或者它们是否会让事情变得更糟。
理想情况下,我将能够避免使用聪明的编译技术来使用SIGSEGV方法,但我想确定当前方法的效率是多么低效。
谢谢!
答案 0 :(得分:2)
处理偶然的页面错误很可能比你想到的“聪明的编译技术”更有效,无论这些技术是什么。
当然唯一可以确定两者的方法。
P.S。有些数字,请参阅https://stackoverflow.com/a/10227511/367273