Questions tagged «performance»

对于与代码的度量或改进以及应用程序效率有关的问题。

30
反转字符串的最佳方法
我只需要在C#2.0中编写一个字符串反向函数(即LINQ不可用),并提出了以下建议: public string Reverse(string text) { char[] cArray = text.ToCharArray(); string reverse = String.Empty; for (int i = cArray.Length - 1; i > -1; i--) { reverse += cArray[i]; } return reverse; } 就我个人而言,我并不对功能感到疯狂,并且坚信有更好的方法来实现它。在那儿?


5
为什么(a * b!= 0)比Java中的(a!= 0 && b!= 0)快?
我正在用Java写一些代码,在某些时候,程序的流程是由两个int变量“ a”和“ b”是否非零(请注意:a和b永远都不为负,以及永远不会在整数溢出范围内)。 我可以用 if (a != 0 && b != 0) { /* Some code */ } 或者 if (a*b != 0) { /* Some code */ } 因为我希望这段代码每次运行可以运行数百万次,所以我想知道哪一个更快。我通过在一个巨大的随机生成的数组上进行比较来进行实验,我也很好奇该数组的稀疏性(数据分数= 0)如何影响结果: long time; final int len = 50000000; int arbitrary = 0; int[][] nums = new int[2][len]; for (double fraction …

23
对于繁重的计算,Fortran是否比C更容易优化?
我不时地读到,对于繁重的计算,Fortran比C更快,甚至可以更快。是真的吗 我必须承认,我几乎不了解Fortran,但是到目前为止,我所看到的Fortran代码并未表明该语言具有C所没有的功能。 如果是真的,请告诉我原因。请不要告诉我哪种语言或库最适合数字运算,我不打算编写应用程序或库来做到这一点,我很好奇。
410 c  performance  fortran 

12
HashSet与列表性能
显然,泛型HashSet<T>类的搜索性能高于泛型List<T>类。只需将基于哈希的键与线性方法进行比较即可List<T>。 但是,计算哈希键本身可能会花费一些CPU周期,因此对于少量项,线性搜索可以真正替代HashSet<T>。 我的问题:收支平衡在哪里? 为了简化场景(公平地说),我们假定List<T>类使用元素的Equals()方法来标识项目。

16
静态链接与动态链接
在某些情况下,是否有任何令人信服的性能原因选择静态链接而不是动态链接?我已经听过或阅读了以下内容,但是我对这个主题的了解不足,无法保证其准确性。 1)静态链接和动态链接之间的运行时性能差异通常可以忽略不计。 2)(1)如果使用使用概要文件数据来优化程序热路径的性能分析编译器,则不正确,因为使用静态链接,编译器可以同时优化您的代码和库代码。使用动态链接只能优化您的代码。如果大部分时间都花在运行库代码上,那将有很大的不同。否则,(1)仍然适用。


6
确定整数是否在具有已知值集的两个整数(包括两个整数)之间的最快方法
有没有比x >= start && x <= endC或C ++ 更快的方法来测试整数是否在两个整数之间? 更新:我的特定平台是iOS。这是框模糊功能的一部分,该功能将像素限制为给定正方形中的圆形。 更新:尝试了可接受的答案后,我在一行代码上以正常x >= start && x <= end方式完成了一个数量级的加速。 更新:这是来自XCode的汇编程序的前后代码: 新方法 // diff = (end - start) + 1 #define POINT_IN_RANGE_AND_INCREMENT(p, range) ((p++ - range.start) < range.diff) Ltmp1313: ldr r0, [sp, #176] @ 4-byte Reload ldr r1, [sp, #164] @ 4-byte Reload …
389 c++  c  performance  math 

12
如果使用的是普通键,使用地图而不使用unordered_map有什么优势吗?
最近一次有关unordered_mapC ++的讨论使我意识到,由于查找效率高(摊销O(1)与O(log n)),我应该unordered_map在map以前使用过的大多数情况下使用。大多数情况下,我使用地图,或者使用或作为密钥类型。因此,我对散列函数的定义没有任何问题。我想得越多,就越发意识到,对于简单类型的键,我找不到使用over的任何原因-我看了一下接口,却没有发现任何原因会影响我的代码的重大差异。intstd::stringstd::mapstd::unordered_map 因此,问题:是否有使用任何真正的原因std::map在std::unordered_map简单类型等的情况下int和std::string? 我是从严格的编程角度询问的-我知道它还没有完全被认为是标准的,并且可能会带来移植方面的问题。 另外,我希望正确的答案之一可能是“由于开销较小(对于较小的数据集,效率更高)”(是吗?),因此,我想将问题限制在以下情况:键是不平凡的(> 1,024)。 编辑: h,我忘了明显的东西(感谢GMan!)-是的,当然,地图是有序的-我知道,并且正在寻找其他原因。

22
HTTP vs HTTPS性能
http和https之间在性能方面有什么主要区别吗?我似乎还记得阅读过的文章,HTTPS的速度可以是HTTP的五分之一。这对于当前的网络服务器/浏览器有效吗?如果是这样,是否有任何白皮书来支持它?
363 performance  http  https 

7
在2D数组上进行迭代时,为什么循环顺序会影响性能?
下面是两个几乎完全相同的程序,除了我切换了i和j变量。它们都以不同的时间运行。有人可以解释为什么会这样吗? 版本1 #include <stdio.h> #include <stdlib.h> main () { int i,j; static int x[4000][4000]; for (i = 0; i < 4000; i++) { for (j = 0; j < 4000; j++) { x[j][i] = i + j; } } } 版本2 #include <stdio.h> #include <stdlib.h> main () { int i,j; …

7
处理可能的IEnumerable多个枚举的警告
因此在我的代码中需要使用IEnumerable<>几次,从而得到“可能的多重枚举IEnumerable” 的Resharper错误。 样例代码: public List<object> Foo(IEnumerable<object> objects) { if (objects == null || !objects.Any()) throw new ArgumentException(); var firstObject = objects.First(); var list = DoSomeThing(firstObject); var secondList = DoSomeThingElse(objects); list.AddRange(secondList); return list; } 我可以将objects参数更改为List,然后避免可能的多重枚举,但随后我没有得到可以处理的最高对象。 另一件事,我可以做的就是将转换IEnumerable到List在方法的开头: public List<object> Foo(IEnumerable<object> objects) { var objectList = objects.ToList(); // ... } 但是,这很尴尬。 在这种情况下您会做什么?

16
视图比简单查询快吗?
是一个 select * from myView 创建视图的速度比查询本身快(以便具有相同的resultSet): select * from ([query to create same resultSet as myView]) ? 对于视图来说,是否使用某种类型的缓存使其比简单查询更快,这对我来说还不是很清楚。

7
什么时候以及为什么数据库连接昂贵?
我正在对数据库进行一些研究,并且正在研究关系数据库的一些局限性。 我知道大表的联接非常昂贵,但是我不确定为什么。DBMS需要执行什么操作才能执行联接操作,瓶颈在哪里? 非规范化如何帮助克服这一费用?其他优化技术(例如,索引编制)如何提供帮助? 欢迎亲身经历!如果您要发布资源链接,请避免使用Wikipedia。我知道在哪里可以找到。 与此相关,我想知道BigTable和SimpleDB等云服务数据库使用的非规范化方法。看到这个问题。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.