Questions tagged «performance»

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

3
ALTER TABLE ADD COLUMN需要很长时间
我只是想在数据库中的表(main_table)中添加一个名为“ location”的列。我运行的命令是 ALTER TABLE main_table ADD COLUMN location varchar (256); main_table包含> 2,000,000行。它持续运行超过2小时,但仍未完成。 我试图用来mytop 监视此数据库的活动,以确保该查询未被其他查询过程锁定,但似乎没有。应该花那么长时间吗?实际上,我只是在运行此命令之前重新引导了计算机。现在此命令仍在运行。我不确定该怎么办。

1
为什么LINQ .Where(predicate).First()比.First(predicate)快?
我正在做一些性能测试,发现LINQ表达式像 result = list.First(f => f.Id == i).Property 比慢 result = list.Where(f => f.Id == i).First().Property 这似乎与直觉相反。我以为第一个表达式会更快,因为一旦满足谓词,它就可以停止对列表进行迭代,而我以为该.Where()表达式可以在调用.First()结果子集之前对整个列表进行迭代。即使后者短路,也不应比直接使用First更快。 下面是两个非常简单的单元测试,它们说明了这一点。当在.NET和Silverlight 4上使用TestWhereAndFirst进行优化编译时,其速度大约比TestFirstOnly快30%。我试图使谓词返回更多结果,但是性能差异是相同的。 谁能解释为什么.First(fn)比它慢.Where(fn).First()?与.Count(fn)相比,我看到了类似的反直观结果.Where(fn).Count()。 private const int Range = 50000; private class Simple { public int Id { get; set; } public int Value { get; set; } } [TestMethod()] public void TestFirstOnly() { …
73 c#  .net  performance  linq 

9
内置类型的性能:char,short,int,float,double
这似乎是一个愚蠢的问题,但是看到Alexandre C在另一个主题中的答复,我很好奇知道内置类型是否存在性能差异: charVS shortVSint主场迎战float 主场迎战double。 通常我们在现实生活项目中不会考虑这种性能差异(如果有的话),但是出于教育目的,我想知道这一点。可以问的一般问题是: 积分算术和浮点算术之间是否有性能差异? 哪个更快?更快的原因是什么?请解释一下。
72 c++  c  performance  built-in 


6
在C#中尝试/最终的开销?
关于何时以及为什么使用try/catch和try/ catch/我们已经看到了很多问题finally。而且我知道try/肯定有一个用例finally(尤其是因为它是using语句的实现方式)。 我们还看到了有关try / catch和exception开销的问题。 但是,我链接到的问题并没有涉及仅进行最终尝试的开销。 假设try块中没有发生任何异常,那么确保finally语句在离开try块时得到执行(有时通过从函数返回)有什么开销? 同样,我只询问try/ finally,不catch,不抛出异常。 谢谢! 编辑:好的,我将尝试更好地展示我的用例。 我应该使用哪种,DoWithTryFinally还是DoWithoutTryFinally? public bool DoWithTryFinally() { this.IsBusy = true; try { if (DoLongCheckThatWillNotThrowException()) { this.DebugLogSuccess(); return true; } else { this.ErrorLogFailure(); return false; } } finally { this.IsBusy = false; } } public bool DoWithoutTryFinally() { this.IsBusy = true; if …

10
科学计算中的F#性能
我很好奇F#性能与C ++性能相比如何?我问了一个关于Java的类似问题,我得到的印象是Java不适合进行大量数字运算。 我已经读到F#应该具有更高的可扩展性和更高的性能,但是与C ++相比,这种实际性能如何?有关当前实施的具体问题是: 浮点运算的效果如何? 它允许矢量指令吗 对优化编译器有多友好? 它有多少内存占用空间?是否允许对内存局部性进行细粒度控制? 它是否具有用于分布式存储处理器(例如Cray)的容量? 在涉及大量处理的计算科学中,它具有哪些有趣的功能? 是否有使用它的实际科学计算实现? 谢谢

14
我应该不算(*)吗?
我知道执行这样的查询通常不是一个好主意: SELECT * FROM `group_relations` 但是,当我只想计数时,我应该进行此查询,因为这允许更改表,但仍产生相同的结果。 SELECT COUNT(*) FROM `group_relations` 或更具体 SELECT COUNT(`group_id`) FROM `group_relations` 我觉得后者可能会更快,但是还有其他需要考虑的事情吗? 更新:在这种情况下,我使用的是InnoDB,对不起,因为它不够具体。

2
5年后,还有什么比“最快的C ++代表”更好的了?
我知道“ C ++委托”这一主题已经死了,http://www.codeproject.com和http://stackoverflow.com都深深地覆盖了这个问题。 通常,似乎唐·克拉格斯顿(Don Clugston)最快的代表是许多人的首选。还有其他一些流行的。 但是,我注意到其中大多数文章都是较旧的(大约在2005年),并且许多设计选择似乎都是考虑到了诸如VC7之类的旧编译器。 我需要一个音频应用程序非常快速的委托实现。 我仍然需要它具有可移植性(Windows,Mac,Linux),但我只使用现代编译器(VC9,VS2008 SP1和GCC 4.5.x中的编译器)。 我的主要标准是: 它一定要快! 它必须与较新版本的编译器向前兼容。对于Don的实现,我对此表示怀疑,因为他明确声明它不符合标准。 可选地,KISS语法和易用性很高兴 多播会很好,尽管我坚信围绕任何委托库构建它确实很容易 此外,我真的不需要异国情调的功能。我只需要很好的旧方法指针即可。无需支持静态方法,自由函数或类似的东西。 到目前为止,推荐的方法是什么?仍使用Don版本吗?还是有关于另一种选择的“社区共识”? 我真的不想使用Boost.signal / signal2,因为就性能而言这是不可接受的。对QT的依赖也不可接受。 此外,我在谷歌搜索时看到了一些较新的库,例如cpp-events,但是我找不到用户的任何反馈,包括关于SO的反馈。

7
在Java中,&可以比&&快吗?
在此代码中: if (value >= x && value <= y) { 在没有特定模式的情况下,何时value >= x和value <= y可能与否一样,使用&运算符会比使用&&? 具体来说,我正在考虑如何&&懒惰地评估右侧表达式(即,仅当LHS为true时),这意味着有条件,而在Java&中,这保证了对两个(布尔)子表达式的严格评估。两种方法的值结果都是相同的。 但是,尽管>=or<=运算符将使用一个简单的比较指令,但&&必须包含一个分支,并且该分支易受分支预测失败的影响-正如这个非常著名的问题:为什么处理排序数组要比未排序数组快? 因此,强制表达式不包含惰性成分肯定会更具确定性,并且不容易受到预测失败的影响。对? 笔记: 如果代码看起来像这样,显然我的问题的答案将是“否” if(value >= x && verySlowFunction())。我专注于“足够简单”的RHS表达式。 无论如何,那里有一个条件分支(该if语句)。我无法向自己证明这是无关紧要的,替代性表述可能是更好的示例,例如boolean b = value >= x && value <= y; 所有这些都属于可怕的微观优化领域。是的,我知道:-) ...不过有趣吗? 更新 只是为了解释我为什么感兴趣:我一直在盯着Martin Thompson在他来关于Aeron的话题之后在他的Mechanical Sympathy博客上一直在写的系统。关键信息之一是我们的硬件中包含了所有这些神奇的内容,而我们的软件开发人员却不幸地无法利用它。不用担心,我不会在所有代码上都使用s / && / \&// :-) ...但是这个站点上有很多关于通过删除分支来改善分支预测的问题,对我来说,条件布尔运算符是测试条件的核心。 当然,@ StephenC提出了一个奇妙的观点,即将代码弯曲为怪异的形状可以使JIT不太容易发现常见的优化-如果不是现在,则不是将来。而且上述非常著名的问题之所以特别,是因为它使预测的复杂性远远超出了实际优化的范围。 我非常清楚,在大多数(或几乎所有)情况下,这&&是最清晰,最简单,最快,最好的方法-尽管我非常感谢发布了答案的人,以证明这一点!我真的很想看看在任何人的经验中,是否确实有任何案例可以回答“可以&更快?”。可能是... …

4
为什么numpy的einsum比numpy的内置函数快?
让我们从的三个数组开始dtype=np.double。使用numpy 1.7.1编译icc并链接到intel的numpy 1.7.1在intel CPU上执行计时mkl。一个AMD的CPU与编译numpy的1.6.1gcc不mkl也被用来验证的时序。请注意,计时几乎与系统大小成线性比例,并且不是由于numpy函数if语句中的开销很小,这些差异将以微秒而非毫秒显示: arr_1D=np.arange(500,dtype=np.double) large_arr_1D=np.arange(100000,dtype=np.double) arr_2D=np.arange(500**2,dtype=np.double).reshape(500,500) arr_3D=np.arange(500**3,dtype=np.double).reshape(500,500,500) 首先让我们看一下np.sum函数: np.all(np.sum(arr_3D)==np.einsum('ijk->',arr_3D)) True %timeit np.sum(arr_3D) 10 loops, best of 3: 142 ms per loop %timeit np.einsum('ijk->', arr_3D) 10 loops, best of 3: 70.2 ms per loop 权力: np.allclose(arr_3D*arr_3D*arr_3D,np.einsum('ijk,ijk,ijk->ijk',arr_3D,arr_3D,arr_3D)) True %timeit arr_3D*arr_3D*arr_3D 1 loops, best of 3: 1.32 s per loop %timeit np.einsum('ijk,ijk,ijk->ijk', …



2
使用WPF实施日志查看器
我寻求有关使用WPF实现控制台日志查看器的最佳方法的建议。 它应符合以下条件: 100.000+行快速滚动 一些条目(如stacktraces)应该是可折叠的 长物品包装 该列表可以通过不同的条件(搜索,标签等)进行过滤 最后,添加新项目时,它应继续滚动 线元素可以包含某种附加格式,例如超链接和出现计数器 总的来说,我想到的是FireBug和Chrome的控制台窗口。 我打得四处这个,但我并没有取得多大进展,因为... - DataGrid中不能处理不同项目的高度-滚动位置释放滚动条(这是完全不能接受的)后才会更新。 我很确定,我需要某种形式的虚拟化,并且愿意遵循MVVM模式。 欢迎任何帮助或指点。


13
Python比Java / C#慢吗?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 7年前关闭。 改善这个问题 Python比Java / C#慢吗? 性能比较c-java-python-ruby-jython-jruby-groovy 这是一个优化CPython的项目:空载吞咽
71 c#  java  python  performance 

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.