今年有很多关于C ++缓存利用率优化的热门讨论(类似this)。从那些视频看起来好像有神对象(伪代码):
class apples {
vector<int> property_1_Values;
vector<float> property_2_Values;
};
而不是
class apple {
int property_1;
float property_2;
};
这样从第N个元素到M&#39;的迭代将是缓存最优(*他们还说cpu不仅可以预测++
/ --
而且还可以预测{{1序列)。
嗯,我可以看到这一点,我也可以看到如何重新实现我的程序逻辑以适应这样的模型......但它感觉像一个真正的架构上的坏主意 - 创建上帝对象,重新发明继承...所以它接缝对我而言,应该是编译器优化而不是程序员的头脑。
所以我想知道OO语言VM /编译器已经在程序编译/执行时间实现了这样的对象重构? (这样OO程序员就不必进行这样的手工优化)? .NET,JVM,Clang,任何人?
更新:
作为实施此类事物的指南的配置文件是一个非常悲伤和错误的答案 - 最佳地实现这样的上帝对象需要大量的分析,调试等(这样的上帝对象是一个微型GC因为减少矢量大小对每个对象的添加或删除都会很痛苦......)这就是为什么我希望现有的VM已经做到了。我没有看到代码生成器/模板类可以在C +中为工厂提供合理的接口...所以当你有100 + k行代码和一个新的未经过良好测试的上帝对象时,这样的想法似乎很可怕。