- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如果你想在 C++ 中复制一个对象(在堆栈上),复制更大的对象是否更慢?是立即复制对象,还是以迭代方式复制数据字节?:
class Small {
public:
int stuff[32];
};
class Big {
public:
int stuff[1024];
};
...
Small small;
Big big;
Small small2 = Small(small); //Faster?
Big big2 = Big(big); //Slower?
抱歉,目前我没有时间测试它。
最佳答案
是的,较大的对象比较小的对象需要更多的时间来复制或移动。
一个包含 32 个整数的数组需要 32 次复制或移动操作。
一个包含 1024 个整数的数组需要 1024 次复制或移动操作。
问题是时差是否显着。对于现代处理器,大多数复制操作都在纳秒级。那么,(大约)1000 纳秒会影响您的程序吗?这取决于。如果您的程序花费数毫秒或更多时间等待 I/O,则差异可能并不显着。
编辑 1:
所需的空间量可能比复制所花费的时间更重要。
大对象的一般经验法则是让它们坐下并传递指向对象的指针;避免复制或移动大对象。与大型对象相比,指针占用的空间更小,复制和移动速度更快。也更喜欢对指针的引用。
编辑 2:- 堆栈
复制到堆栈 取决于处理器和编译器的协议(protocol)。堆栈不是必需的。
在使用堆栈传递参数和局部变量分配的经典实现中,除了复制对象之外,开销还涉及递增堆栈指针变量。
所以,如果我将 32 个整数传递给一个函数,将有 32 个复制操作加上一个对堆栈指针的加法操作。
一般而言,堆栈空间的关注比将大对象压入(复制)到堆栈所需的时间更为重要。
根据优化级别和其他属性,您的编译器可能能够通过指针传递您的对象。
关于c++ - 较大的对象复制速度是否较慢(C++)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26792602/
有人可以解释一下,在 DOM 中搜索元素时,为什么 Xpath 被认为比 CSS 选择器慢。不同的选择器是否有不同的引擎(例如 Xpath、CSS 选择器等) 谢谢 最佳答案 Xpath 并不是被认为
在我们的一个 MVC 页面中尝试加速某些 ajax 调用时,我遇到了一些我无法真正解释的奇怪行为。我每隔 N 秒就会进行一些 ajax 调用,以轮询一些统计数据。 似乎在物理上不同的文件中对 Cont
Background 尝试进行一个简单的实验,看看传统的 if 语句检查 null 是否比 Apache Commons Lang StringUtils isEmpty/isBlank 更快。 为了
我正在从 Android 设备调用 rest api,并且看到与 PC 相比的速度差异,我感到非常惊讶。下面是来自 PC 上的休息工具的图像。 我尝试了几个库,如 Retrofit、Volley 和常
为什么 scipy.distance.cdist 使用 float32 和 float64 时性能差异很大? from scipy.spatial import distance import num
我是一名优秀的程序员,十分优秀!