草庐IT

c++ - 函数内联——有哪些损害性能的例子?

传统观点认为函数内联并不总是有益,甚至会损害性能:TheLinuxkernelstyleguide警告不要过度内联谷歌也recommendsprogrammersbecarefulwithinliningC++FAQlite说更多相同的话我理解为什么内联应该有所帮助-它通过将被调用函数包含在其调用者中来消除函数调用开销。我也理解为什么人们声称它会损害性能——内联函数在某些情况下会增加代码大小,最终会增加缓存未命中率甚至触发额外的页面错误。这一切都是有道理的。不过,我很难找到内联实际上会损害性能的具体示例。当然,如果这个问题足以值得警告,那么某个地方的某个人一定遇到过内联是一个问题的例子

ios - 在不损害应用程序性能的情况下,从 Core Data 执行级联对象删除的有效方法是什么?

我们应用程序中的数据库由多层嵌套的对象组成。出于架构原因,我们现在不可行。每天都有很大一部分数据会过期。随着数据库规模的增长,我们的应用程序性能会下降。因此,我们需要找到一种有效的方法来保持数据库较小(至少在这个版本中),我们正在考虑以下方法之一:在applicationWillResignActive期间,通过遍历根级别的所有对象删除NSManagedObjects,对每个对象调用delete,然后允许将删除级联到“对多”对象的3层。这涉及在最后将所有这些提交给数据库的一个上下文保存。这通常需要10-20秒(在iPhone4上)来删除对象,Springboard在10秒时终止该过程。

c++ - "non-native"指针会损害缓存性能吗?

据我所知,硬件预取器至少会检测并获取内存中的恒定步幅。另外它可以monitordataaccesspatterns,无论这真正意味着什么。这让我想知道,硬件预取器会根据存储在内存中的实际数据做出决定,还是纯粹基于程序表现出的行为?我问的原因是因为我偶尔会使用“非本地”指针作为指针。一个简单的例子是一个预先分配的数组,以及索引这个数组的小整数而不是指针。如果我需要存储大量这样的“指针”,那么节省的内存可以快速增加,进而通过使用更少的内存间接提高缓存性能。但据我所知,这可能会干扰硬件预取器的工作方式。或不!我当然可以想象,不管现实与否,一个预取单元检查进入L1高速缓存的本地指针地址的高速缓