草庐IT

CPU时间

全部标签

C++:字符串 vector 的随机访问时间如何工作?

我知道一个简单的intvector有O(1)的随机访问时间,因为它很容易计算第x个元素的位置,给定所有元素都具有相同的大小。现在字符串vector怎么了?由于字符串长度不同,它不能有O(1)的随机访问时间,不是吗?如果可以,背后的逻辑是什么?谢谢。更新:回答的非常清楚简洁,谢谢大家的帮助。我接受了Joey的回答,因为它简单易懂。 最佳答案 vector确实有O(1)的访问时间。String对象都具有相同的大小(在给定的实现上),无论它们表示的字符串的大小如何。通常,字符串对象包含指向已分配内存的指针,该内存包含字符串数据。因此,如果

C++:跟踪调用函数的时间

将计数器作为参数传递给函数时,跟踪函数被调用的次数很容易。从被调用函数返回一个也很容易。但是,我不想走那条路。这背后的原因是因为它看起来像是糟糕的编程(让函数知道太多信息)。有没有更好的方法来跟踪此函数被调用的次数?我只是在寻找可以研究的概念。提供代码示例不是必需的,但可能会有帮助。编辑:我实际上并不是在寻找分析工具。让我添加一些代码来阐明我的观点。因为funcCounter的作用域以main结尾,所以我无法从myFunction取回一个会递增funcCounter的变量。我可能会从myFunction返回1,然后以这种方式递增funcCounter,但这似乎不是很好的编程。还有其他方

dplyr:在标记时间段之前的几年内过滤

我想要一份全国特定假人的清单,我也想纪念年份两年在那几年之前。数据看起来像这样library(tidyverse)df因此对于"USA"我也想放一个1进入列occurence2009年和2010年的年份FRA2005年,2006年,2013年和2014年。我考虑过这样的事情:df%>%group_by(country)%>%mutate(occurence=ifelse("notsurewhattoputhere"),1,0))但是我不确定如何告诉R仅在我想要的几年中过滤。看答案这是另一个dplyr解决方案:df%>%group_by(country)%>%mutate(occurrence=

检查动画状态时间 - 为什么不工作?

我需要在其当前动画(动画仪中的状态)完成后禁用对象。为什么不起作用?if(myObject.GetComponent看答案比较不是一个好主意float直接喜欢normalizedTime==1。只是使用或者>=。您也可以使用Mathf.Approximately.无论如何,当您启动动画时,启动一个Coroutine功能,该功能检查该动画是否完成。这样可以防止更新功能中的浪费时间检查动画何时完成动画。该coroutine函数应具有检查动画名称的参数。IEnumeratorOnAnimationComplete(stringname){Animatoranim=myObject.GetCompon

c++ - 对于受 CPU 限制的应用程序,您会推荐哪种语言/平台?

我正在开发非交互式cpu绑定(bind)应用程序,它只进行计算,几乎没有IO。目前它工作时间太长,在我努力改进算法的同时,我也在考虑它是否可以为更改语言或平台带来任何好处。目前它是在使用英特尔C++编译器编译的Windows上的C++(没有OOP,所以它几乎是C)。切换到ASM有帮助吗?帮助有多大?切换到Linux和GCC会有帮助吗? 最佳答案 只是要彻底:要做的第一件事是收集配置文件数据,第二件事是考虑您的算法。我相信您知道这一点,但它们必须#included到任何性能编程讨论中。直接回答您的问题“切换到ASM有帮助吗?”答案是“

c++ - malloc 多个小时间或几个大时间更快?

当使用malloc分配内存时,对较小的数据block进行多次malloc还是对较大的数据block进行较少的malloc通常更快?例如,假设您正在处理一个包含黑色像素和白色像素的图像文件。您正在遍历像素并希望将每个黑色像素的x和y位置保存在一个新结构中,该结构还具有指向下一个和上一个像素x和y值的指针。使用指针为每个黑色像素的x和y值分配一个新结构来遍历像素通常会更快,还是通过遍历一次来计算黑色像素的数量,然后分配一个大的使用仅包含x和y值但不包含指针的结构的内存块,然后再次迭代,将x和y值保存到该数组中?我假设某些平台在哪个更快方面可能与其他平台不同,但每个人都认为什么通常会更快?

c++ - 编译时间间隔检查器

我找不到编译时间间隔检查器,所以我尝试了一些方法来开发一个自己的方法,您应该在其中输入有问题的值、最小值和最大值,以便检查器在有问题的值在两个端点之间。我的第一个方法只是能够比较整数,它看起来像这样:templatestructis_in_interval:publicstd::integral_constant=LoEnd&&Val::type{};对该函数的调用看起来像boolinside=is_in_interval::value;这似乎奏效了。如果低端高于高端,我什至可以让它在编译时失败:templatestructis_in_interval:publicstd::integ

c++ - 如何缩短巨大 bool 表达式的编译时间?

我需要对vector执行相当复杂的检查,而且我必须重复它成千上万次。为了提高效率,我将给定的公式翻译成C++源代码,并将其编译为高度优化的二进制文件,我在代码中调用它。公式始终是纯bool值:只有&&、||和!用过的。典型的源代码如下所示:#include#includeusingDataType=std::vector;staticconstcharT=1;staticconstcharF=0;conststd::size_tmaxidx=300;extern"C"boolcheck(constDataType&l);boolcheck(constDataType&l){assert

c++ - vector::clear() 花这么多时间?

我在我的程序上运行了一个分析器(非常困),它显示了我的重置函数的高百分比(重置函数每帧运行)。程序如下所示:初始化部分:std::vector>VecOfVecOfPath;VecOfVecOfPath.resize(20);for(inti=0;iVecOfVecOfPath是其他函数找到的一系列路径。VecOfVecOfPath[i]将在执行期间逐帧填充。例如。它由其他函数push_back编辑,并在使用前按帧重置。重置函数:voidReset(){for(inti=0;i因此重置非常简单,但它在分析器中的排名确实很高。这很常见吗?即使对于内置类型vector,vector::cl

c++ - 一段时间后Qt框架消失

我在Qt中完成了一个Windows窗体应用程序,我有一些QPushButton、QGroupBox等等,应用程序运行良好。但是当我将应用程序留到第二天时,我发现按钮、组框和所有具有框架的小部件周围的所有框架都消失了。但应用程序仍在正常工作。在这里,我编辑了一张图片。应用程序在其他对话框中的一些小部件上设置了一些样式表,并设置了一些小部件的启用和关闭。但是有没有人遇到同样的问题?也许可以解释为什么会这样? 最佳答案 也许,您的程序泄漏了GDI对象。Windows应用程序只能使用9999个GDI对象。当您的应用程序泄漏太多GDI对象时,