Tag: performance

使用if-return-return或if-else-return会更有效率吗?

假设我有一个return的if语句。 从效率的angular度来看,我应该使用 if(A > B): return A+1 return A-1 要么 if(A > B): return A+1 else: return A-1 当使用编译语言(C)或脚本语言(Python)时,我应该更喜欢哪一种?

加快Java -Xms和-Xmx选项的权衡

给出这两个命令 A: $ java -Xms10G -Xmx10G myjavacode input.txt B: $ java -Xms5G -Xmx5G myjavacode input.txt 我有两个问题: 由于命令A用参数保留更多的内存,A会比B运行得更快吗? -Xmx和-Xms如何影响正在运行的进程和我的程序的输出?

如果语句与if-else语句,哪个更快?

有一天我和一个朋友争论了这两个片段。 哪个更快,为什么? value = 5; if (condition) { value = 6; } 和: if (condition) { value = 6; } else { value = 5; } 如果value是一个matrix呢? 注意:我知道这个value = condition ? 6 : 5; value = condition ? 6 : 5; 存在,我期望它更快,但它不是一个选项。 编辑 (由于问题暂时搁置,工作人员要求): 请考虑由主stream编译器(如g ++,clang ++,vc,mingw )在优化和非优化版本或MIPS汇编中生成的x86 汇编 。 当大会不同时,解释为什么一个版本更快,何时( 例如“更好,因为没有分支和分支有下列问题blahblah” )

Python:为什么*和**比/和sqrt()更快?

在优化我的代码时,我意识到了以下几点 >>> from timeit import Timer as T >>> T(lambda : 1234567890 / 4.0).repeat() [0.22256922721862793, 0.20560789108276367, 0.20530295372009277] >>> from __future__ import division >>> T(lambda : 1234567890 / 4).repeat() [0.14969301223754883, 0.14155197143554688, 0.14141488075256348] >>> T(lambda : 1234567890 * 0.25).repeat() [0.13619112968444824, 0.1281130313873291, 0.12830305099487305] 并且: >>> from math import sqrt >>> T(lambda : sqrt(1234567890)).repeat() [0.2597470283508301, 0.2498021125793457, 0.24994492530822754] >>> T(lambda […]

为什么LINQ JOIN比用WHERE连接要快得多?

我最近升级到VS 2010,并与LINQ to Dataset玩弄。 我在ASP.NET WebApplication的HttpCache中有一个强大的Authorizationtypes数据集。 所以我想知道什么是最快的方式来检查用户是否有权做一些事情。 这是我的数据模型和其他一些信息,如果有人感兴趣。 我已经检查了3种方法: 直接数据库 使用Where条件作为“join”的LINQ查询 – 语法 使用Join – Syntax的LINQ查询 这些是每个函数1000个调用的结果: 1.Iteration: 4,2841519秒 115,7796925秒 2,024749秒 2.Iteration: 3,1954857秒 84,97047秒 1,5783397秒 3.Iteration: 2,7922143秒 97,8713267秒 1,8432163秒 平均: 数据库:3,4239506333秒 其中:99,5404964秒 join:1,815435秒 为什么Join-version比where语法要快得多,尽pipe作为LINQ新手它似乎是最清晰的。 还是我错过了我的疑问? 这里是LINQ查询,我跳过数据库: 其中 : Public Function hasAccessDS_Where(ByVal accessRule As String) As Boolean Dim userID As Guid = DirectCast(Membership.GetUser.ProviderUserKey, Guid) Dim query […]

Java和C / C ++之间进程间通信的最快(低延迟)方法

我有一个Java应用程序,通过TCP套接字连接到C / C ++开发的“服务器”。 应用程序和服务器都运行在同一台机器上,一个Solaris机器上(但我们正在考虑最终迁移到Linux上)。 交换的数据types是简单的消息(login,login确认,然后客户端要求某事,服务器答复)。 每条消息的长度大约为300个字节。 目前我们正在使用套接字,并且一切正常,但是我正在寻找一种使用IPC方法交换数据(更低的延迟)的更快方式。 我一直在研究networking,并提出了以下技术的参考: 共享内存 pipe道 队列 以及所谓的DMA(直接存储器存取) 但是我找不到适合自己的performance的分析,既没有用JAVA和C / C ++来实现它们,也没有我想象得到的pipe道。 任何人都可以在这方面评论每种方法的性能和可行性吗? 任何指针/链接到有用的实现信息? 编辑/更新 下面的评论和答案我在这里,我发现有关Unix域套接字的信息,这似乎是build立在pipe道,并将节省我整个TCP堆栈。 这是平台特定的,所以我打算用JNI或Juds或Junixsocket进行testing。 接下来可能的步骤是直接实现pipe道,然后共享内存,虽然我已经被警告复杂的额外水平… 谢谢你的帮助

在数组中,Java的速度比std :: vector快8倍。 我做错了什么?

我有以下Java代码与几个大数组永远不会改变他们的大小。 它运行在我的电脑上1100毫秒。 我用C ++实现了相同的代码,并使用std::vector 。 运行完全相同代码的C ++实现的时间在我的计算机上为8800毫秒。 我做错了什么,以便它慢慢运行? 基本上,代码执行以下操作: for (int i = 0; i < numberOfCells; ++i) { h[i] = h[i] + 1; floodedCells[i] = !floodedCells[i]; floodedCellsTimeInterval[i] = !floodedCellsTimeInterval[i]; qInflow[i] = qInflow[i] + 1; } 它遍历大小约为20000的不同数组。 您可以在以下链接下find两个实现: Java: https : //ideone.com/R8KqjT C ++: https : //ideone.com/Lu7RpE (因为时间限制,我只能运行400次,而不是2000次),但是即使在这里也有三次的差别)

Python:List vs Dict查找表

我有大约1000万的价值,我需要在某种types的查询表中,所以我想知道哪一个更有效的清单或字典 ? 我知道你可以为两者做这样的事情: if something in dict_of_stuff: pass 和 if something in list_of_stuff: pass 我的想法是字典将更快,更高效。 谢谢你的帮助。 编辑1 关于我正在尝试做什么的更多信息。 欧拉问题92 。 我正在查找表,看是否计算出的值已经全部准备好了。 编辑2 查找效率。 编辑3 没有价值与价值相关…所以一套更好?

“x <y <z”比“x <y和y <z”更快吗?

从这个页面 ,我们知道: 链式比较比使用and运算符更快。 写x < y < z而不是x < y and y < z 。 不过,我得到了一个不同的结果testing下面的代码片段: $ python -m timeit "x = 1.2" "y = 1.3" "z = 1.8" "x < y < z" 1000000 loops, best of 3: 0.322 usec per loop $ python -m timeit "x = 1.2" "y = 1.3" "z = […]

Python中的哪个更快:x **。5或math.sqrt(x)?

我一直在想这个。 正如标题所说,哪个更快,实际function还是简单地提高到一半的功率? UPDATE 这不是过早优化的问题。 这只是底层代码实际工作的一个问题。 Python代码的工作原理是什么? 我给Guido van Rossum发了一封电子邮件,因为我真的很想知道这些方法的不同之处。 我的电子邮件: 至less有三种方法可以在Python中做平方根:math.sqrt,'**'运算符和pow(x,.5)。 我只是好奇在每个这些的执行的差异。 谈到效率更好? 他的回应是: 战俘和**是等同的; math.sqrt不适用于复数,并链接到C sqrt()函数。 至于哪一个更快,我不知道…