Questions tagged «performance»

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

29
最喜欢的性能调优技巧
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 8年前关闭。 当您有需要性能调整的查询或存储过程时,首先要尝试哪些操作?

12
在C ++程序中使用scanf()比使用cin更快?
我不知道这是不是真的,但是当我在一个提供问题的网站上阅读常见问题解答时,我发现了一些东西,引起了我的注意: 检查您的输入/输出方法。在C ++中,使用cin和cout太慢。使用这些,您将保证无法用大量输入或输出解决任何问题。请改用printf和scanf。 有人可以澄清一下吗?在C ++程序中使用scanf()真的比使用cin >>更快吗?如果是,那么在C ++程序中使用它是否是一个好习惯?我以为这是C特定的,尽管我只是在学习C ++。
126 c++  c  performance  io 

8
字典与对象-哪个更有效,为什么?
在内存使用和CPU消耗方面,在Python中更有效的方法是-字典还是对象? 背景: 我必须将大量数据加载到Python中。我创建了一个只是字段容器的对象。创建4M实例并将其放入字典中大约需要10分钟和约6GB的内存。字典准备就绪后,只需眨眼即可访问。 示例: 为了检查性能,我编写了两个简单的程序,它们执行相同的操作-一个使用对象,另一个使用字典: 对象(执行时间〜18sec): class Obj(object): def __init__(self, i): self.i = i self.l = [] all = {} for i in range(1000000): all[i] = Obj(i) 字典(执行时间约12秒): all = {} for i in range(1000000): o = {} o['i'] = i o['l'] = [] all[i] = o 问题: 我做错什么了吗?字典比对象快?如果确实字典表现更好,有人可以解释为什么吗?



30
应该在for循环中使用<或<=
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 11个月前关闭。 改善这个问题 如果您必须迭代7次,请使用: for (int i = 0; i &lt; 7; i++) 要么: for (int i = 0; i &lt;= 6; i++) 有两个注意事项: 性能 可读性 为了提高性能,我假设使用Java或C#。是否使用“小于”或“小于或等于”是否重要?如果您有其他语言的见解,请指出。 为了提高可读性,我假设基于0的数组。 UPD:我提到的从0开始的数组可能会使您感到困惑。我不是在谈论遍历数组元素。只是一个一般的循环。 下面有一个关于使用常数的好处,该常数可以解释这个魔术数字是什么。因此,如果我有“ int NUMBER_OF_THINGS = 7”,那么“ i &lt;= NUMBER_OF_THINGS - 1”看起来会很奇怪,不是吗。


12
选择*与选择列
如果我只需要2/3列,而是查询SELECT *而不是在select查询中提供这些列,那么关于更多/更少I / O或内存的性能是否会降低? 如果我不需要选择*,则可能会出现网络开销。 但是在选择操作中,数据库引擎是否总是从磁盘中提取原子元组,还是仅提取在选择操作中请求的那些列? 如果它总是拉一个元组,那么I / O开销是相同的。 同时,如果它拉出一个元组,从元组中剥离请求的列可能会占用内存。 因此,在这种情况下,select someColumn将比select *具有更多的内存开销。
124 sql  performance 

8
LINQ语句比“ foreach”循环快吗?
我正在编写一个“网格渲染”管理器,并认为最好将所有使用同一着色器的网格进行分组,然后在我通过该着色器通道时进行渲染。 我目前正在使用foreach循环,但想知道使用LINQ是否可以提高性能?
124 c#  performance  linq  foreach 

3
Scala中的模式匹配如何在字节码级别实现?
Scala中的模式匹配如何在字节码级别实现? 它像一系列if (x instanceof Foo)结构,还是其他?它对性能有何影响? 例如,给定以下代码(来自Scala By Example第46-48页),该方法的等效Java代码将如何显示eval? abstract class Expr case class Number(n: Int) extends Expr case class Sum(e1: Expr, e2: Expr) extends Expr def eval(e: Expr): Int = e match { case Number(x) =&gt; x case Sum(l, r) =&gt; eval(l) + eval(r) } PS我可以读取Java字节码,因此字节码表示形式对我来说已经足够了,但其他读者可能更清楚知道它看起来像Java代码一样好。 PPS《Scala中的编程》一书是否对此问题以及有关如何实现Scala的类似问题给出了答案?我已订购这本书,但尚未到货。

13
C ++性能挑战:整数到std :: string的转换
谁能击败下面链接到std :: string代码的整数的性能? 已经有几个问题可以解释如何std::string在C ++中将整数转换为一个整数,例如this,但是所提供的解决方案都不有效。 以下是可与之竞争的一些常见方法的编译就绪代码: 使用stringstream的“ C ++方式”:http : //ideone.com/jh3Sa sprintf,SO-ers通常向注重性能的人推荐:sprintf:http : //ideone.com/82kwR 与流行的看法相反,boost::lexical_cast它具有自己的实现(白皮书),并且不使用stringstream和数字插入运算符。我真的很想比较它的性能,因为另一个问题表明它很惨。 我自己的贡献在台式计算机上具有竞争力,并且展示了一种在嵌入式系统上也可以全速运行的方法,这与依赖于整数模的算法不同: Ben的算法:http://ideone.com/SsEUW 如果您想使用该代码,我将在简化的BSD许可下使它可用(允许用于商业用途,需要提供署名)。只是问问。 最后,该功能ltoa是非标准的,但可广泛使用。 ltoa版本,适用于拥有提供该版本的编译器的用户(ideone不提供):http ://ideone.com/T5Wim 我将很快发布我的绩效评估作为答案。 算法规则 提供用于将至少32位有符号和无符号整数转换为十进制的代码。 将输出生成为std::string。 没有与线程和信号不兼容的技巧(例如,静态缓冲区)。 您可以假设使用ASCII字符集。 确保在以下位置测试您的代码 INT_MIN在绝对值无法表示的二进制补码机上。 理想情况下,输出应与使用的标准C ++版本的字符换字符相同stringstream,http://ideone.com/jh3Sa,但任何事情,这显然是理解的,因为正确的号码也是OK。 新增:尽管您可以使用想要进行比较的任何编译器和优化器选项(完全禁用除外),但至少在VC ++ 2010和g ++下,代码也需要编译并给出正确的结果。 希望进行的讨论 除了更好的算法,我还想在几种不同的平台和编译器上获得一些基准(让我们使用MB / s吞吐量作为我们的标准度量单位)。我相信算法的代码(我知道sprintf基准测试有一些捷径-现在已经确定),至少在ASCII假设下,该代码是标准明确定义的行为,但是如果您看到任何未定义的行为或输入,则输出为无效,请指出。 结论: g ++和VC2010的算法不同,可能是由于每种算法的实现不同std::string。显然,VC2010在NRVO方面做得更好,仅在gcc上摆脱了按价值回报的方法。 发现代码的性能要好sprintf一个数量级。 ostringstream落后50倍甚至更多。 挑战的赢家是user434507,该用户生成的代码在gcc上运行我自己的速度的350%。由于SO社区的异想天开,其他条目已关闭。 当前(最终?)速度冠军是: 对于gcc:user434507,速度比快8倍sprintf: http 对于Visual C …



6
SQL中where子句的顺序重要吗?
假设我有一个名为PEOPLE3列的表ID, LastName, FirstName,这些列都没有索引。 LastName比较独特,FirstName却不那么独特。 如果我进行2次搜索: select * from PEOPLE where FirstName="F" and LastName="L" select * from PEOPLE where LastName="L" and FirstName="F" 我相信第二个更快,因为LastName在where子句中,更独特的标准()排在第一位,并且记录将被更有效地消除。我认为优化器不够聪明,无法优化第一个sql。 我的理解正确吗?


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.