草庐IT

PERFORMANCE

全部标签

c++ - 重载 operator[] 从 1 开始和性能开销

我正在做一些C++计算力学(不用担心,这里不需要物理知识),有些事情真的让我很困扰。假设我想表示一个3D数学vector(与std::vector无关):classVector{public:Vector(doublex=0.,doubley=0.,doublez=0.){coordinates[0]=x;coordinates[1]=y;coordinates[2]=z;}private:doublecoordinates[3];};到目前为止一切顺利。现在我可以重载operator[]来提取坐标:double&Vector::operator[](inti){returncoord

c++ - 从 std::map 值获取键的有效方法

我有一张map如下:std::mapmapobj;mapobj["one"]=1;mapobj["two"]=2;mapobj["three"]=3;当输入为值时如何获取key例如:输入:1输出:一个注意:在我的例子中,值是唯一的 最佳答案 一对一映射实际上非常简单,最快的方法可能是维护两个映射,每个方向一个。如果它不是一对一的,它会变得更加复杂,因为您需要提供一种方法来获取值或键的集合,而不是单个值或键。幸运的是,您只有一对一的要求。其中一个映射是您现在拥有的映射,另一个映射会将值映射到给定的键,所以两者都是:std::mapfo

c++ - STL 数据结构的输出参数与堆栈返回值的效率

假设我有这些功能std::Vectorcalculate(){std::Vectorpoints;//dostuffwithpointsreturnpoints;}和voidcalculate(std::Vector&points){//dostuffwithpoints}所以我的问题是特定于在堆栈上初始化的对象,并且是STL对象。性能上有什么区别吗,流行的方法是什么问候 最佳答案 以值作为引用参数具有以下性质:不会进行复制、移动或任何其他操作。用户端不能立即丢弃返回值。他们不能只是在你的函数的引用参数或其他东西上插入一个临时的。他

c++ - C++ boost 绑定(bind)性能

绑定(bind)函数(使用BoostBind)时是否有任何性能影响(正面或负面)? 最佳答案 也许,也许不是。这取决于。std::bind(或boost::bind)的结果是所谓的“绑定(bind)表达式”,它具有由执行。此类型是一个Callable,并且它可转换为std::function(或boost::function).在内部,函数(可能)使用类型删除来处理各种复杂的、有状态的“可调用对象”。在某些(但不一定是所有)情况下,这需要动态分配和虚拟调度。bind和function都是有状态的,因为它们存储绑定(bind)参数。结

C++ std::map 或 std::set - 有效地插入重复项

我有一堆充满重复的数据,我想消除重复项。你知道,例如[1,1,3,5,5,5,7]变为[1,3,5,7]。看起来我可以使用std::map或std::set来处理这个问题。但是,我不确定(a)将所有值简单地插入容器中是否更快,或者(b)检查它们是否已经存在于容器中并且仅在不存在时才插入-插入是否非常有效?即使有更好的方法...您能建议一种快速的方法吗?另一个问题-如果我存储在其中的数据不像整数那样微不足道,而是一个自定义类,那么std::map如何设法正确存储(散列?)数据以便快速访问通过operator[]? 最佳答案 std::

c++ - 智能指针环绕惩罚。使用 std::map 进行内存

我目前正在进行一个性能至关重要的项目。以下是我对这个问题的一些疑问。问题1我的项目涉及大量boost::shared_ptr.我知道使用boost::make_shared在运行时创建共享指针很慢,因为它需要跟踪引用,所以有很多开销。我想知道如果已经创建了boost共享指针,那么这两个语句是否具有相同的性能,或者一个比另一个更快。如果常规指针更快并且我已经有共享指针,我有哪些选项可以调用共享指针指向的方法?statement1:sharedptr->someMethod();//herethepointerisasharedptrcreatedbyboost::make_shareds

c# - 游戏引擎开发问题

很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visitthehelpcenter.关闭9年前。我正在考虑为我的类(class)最后一年项目制作一个简单的游戏引擎。我希望它是模块化和可扩展的,这样我就可以在有时间的时候添加新的部分。例如,我会制作一个完全独立于其他系统的图形引擎,完成后我可以添加一个物理引擎等。我还想制作一个工具集来配合这个引擎。对于我想使用C#的工具,但我不确定这些库。我的问题是,如果我想要一个C#GUI程序,我可以引用一个用C++编写的库吗?如果我在C#中创建了一些库但想

前端性能优化 — 保姆级 Performance 工具使用指南

性能分析一直是前端er们津津乐道的话题;而俗话说得好:工欲善其事,必先利其器;说到前端性能,就少不了性能分析的利器—— Performance 😎;我想各位前端小伙伴,在使用Chrome浏览器 DevTool 时或多或少都有留意到这个面板吧?图片今天我们就迈开性能分析的第一步,来探究一下 Performance 这个强大的工具。文章中提到的 Performance 面板,以Chrome118版本为参考。Performance面板我们打开 Performance 面板:图片我把 Performance 面板大概划分为操作区、设置区、报告区三块区域:操作区:主要用于性能分析的开启、关闭、性能报告的

c++ - 使用 C++14 编译器而不是 C++11 进行编译时,性能会得到提升吗?

我知道使用C++11编译器而不是C++03编译器进行编译可以提高性能(参见question)。但是,从C++11编译器到C++14编译器时,我能期望性能得到提升吗?如果是这样,你能给我看一个代码示例吗,当使用C++14而不是C++11编译时,它会更快。 最佳答案 C++14中的核心语言更改允许实现合并内存分配,请参阅N3664.如果您的编译器/优化器利用了这一优势,您可能会看到性能提升。 关于c++-使用C++14编译器而不是C++11进行编译时,性能会得到提升吗?,我们在StackOv

c++ - 为什么在 NDS 上整数处理速度比字节快?

我注意到当我用整数替换所有字节实例时,我的nds应用程序运行得更快了。所有在线示例都尽可能放置u8/u16实例。是否有具体原因说明为什么会这样? 最佳答案 NintendoDS使用的主处理器是ARM9,一个32位处理器。引用:http://en.wikipedia.org/wiki/ARM9通常,CPU会在wordsizes中进行操作,在本例中为32位。根据您的操作,必须将字节转换为整数,反之亦然,这可能会给处理器带来额外的压力。这种转换以及可能缺少针对32位整数以外的值的指令可能会导致速度不足。