小编Dar*_*ryl的帖子

64位环境中32位整数的性能(C++)

我们已经开始编译一些应用程序的32位和64位版本.我项目中的一个人鼓励我们将所有32位整数切换为64位等值,即使这些值保证适合32位空间.例如,我有一个保证永远不会超过10,000的值,我将其存储在unsigned int中.他的建议是将其切换为size_t,以便在64位环境中扩展到64位,即使我们永远不需要额外的空间.他说,无论每个变量中存储的值如何,使用64位变量都会加速应用程序.他是对的吗?事实证明这是一项很大的工作,如果它没有真正有所作为,我并不急于付出努力.

我们正在使用Microsoft Visual C++ 2008.我有点希望能提供更一般,平台无关的答案.

所以你怎么看?出于性能原因而不是范围原因,我们是否有权花时间更改数据类型?

c++ performance integer

12
推荐指数
3
解决办法
2804
查看次数

如何根据动态属性保存项目?

我正在使用STL std :: multiset <>作为指针的排序列表.排序顺序由指向的项的属性确定,这与此简化示例的行相似:

struct A
{
  int x;
};

bool CompareAPointers(const A* lhs, const A* rhs)
{ return lhs->x < rhs->x; }

std::multiset<A*, CompareAPointers> sorted_set;
Run Code Online (Sandbox Code Playgroud)

复杂的是,用于对集合进行排序的属性值可以更改(您可以在上面的示例中更改Ax),这可能会使排序顺序不正确:

A a1, a2;
a1.x = 1;
a2.x = 2;
sorted_set.insert(&a1);
sorted_set.insert(&a2);
a1.x = 3;
Run Code Online (Sandbox Code Playgroud)

当相关属性发生变化时,我可以通过擦除和重新插入元素来保持列表排序,但是簿记会变得有点痛苦.我觉得我这一切都错了.任何人都可以建议一种更好的方法来保持列表排序时排序顺序可以动态更改?这些变化在可预测的时间以可预测的方式发生,但我目前的方法感觉不对.

c++ sorting stl

4
推荐指数
1
解决办法
848
查看次数

标签 统计

c++ ×2

integer ×1

performance ×1

sorting ×1

stl ×1