Tag: 性能

INNER JOIN可以提供比EXISTS更好的性能

我一直在调查一系列程序的性能改进,最近有一位同事提到他在使用INNER JOIN代替EXISTS时取得了显着的性能提升。 作为调查的一部分,为什么这可能是我想我会问这里的问题。 所以: INNER JOIN可以提供比EXISTS更好的性能吗? 这会发生什么情况? 我怎样才能build立一个testing用例作为certificate? 你有进一步的文件有用的链接? 真的,任何其他的经验,人们可以带来这个问题。 如果有任何答案可以解决这个问题,而没有任何其他可能的性能改进的build议,我将不胜感激。 我们已经取得了一定程度的成功,而我只是对这个项目感兴趣。 任何帮助将非常感激。

如何做一个GUI的OpenGL生活文字渲染?

我正在实现一个基于OpenGL的GUI。 我遇到了每个GUI都会有文本呈现的问题。 我知道在OpenGL中渲染文本的几种方法,但是,我不知道它们中哪一个最适合于GUI。 通常在一个GUI中,我们有两种types的文本 – 静态和现场。 静态很容易 – 我们可以渲染一个TTF到一个纹理,并忘记它。 这是“活”的文本,更困扰我 – 想象控制台,或在多人游戏中的实时聊天。 我想到了几个select: 没有特殊的情况 – 每次文本改变时渲染和加载纹理,记住只有在实际出现新文本时重新渲染纹理,并尝试将较大的文本分割成小部分(如每个聊天行)。 然而,这仍然会让我们挂在像是一直在变化的分数线的情况下,或者是一个呈现“每个人物”的简介文本(在一些科幻游戏中看到的打字机风格) 四个字符 – 这似乎也是一个stream行的解决scheme,你准备一个纹理与ASCII表格,并呈现一个纹理四字符。 但是,我对这种解决scheme的效率深表怀疑。 提示如何更快地做到这一点也是值得欢迎的。 混合解决scheme – 但我不知道如何实现这个干净 因此,问题是如何有效地在OpenGL中呈现文本? 如果这有帮助,我编写STL / Boost-heavy C ++,针对GForce 6及更高版本的graphics卡。

为什么StringBuilder的链式模式sb.append(x).append(y)比普通的sb.append(x)更快; sb.append(Y)?

我有一个显示非常奇怪的结果的microbenchmark: @BenchmarkMode(Mode.Throughput) @Fork(1) @State(Scope.Thread) @Warmup(iterations = 10, time = 1, timeUnit = TimeUnit.SECONDS, batchSize = 1000) @Measurement(iterations = 40, time = 1, timeUnit = TimeUnit.SECONDS, batchSize = 1000) public class Chaining { private String a1 = "111111111111111111111111"; private String a2 = "222222222222222222222222"; private String a3 = "333333333333333333333333"; @Benchmark public String typicalChaining() { return new StringBuilder().append(a1).append(a2).append(a3).toString(); […]

JavaScript对象作为哈希? 复杂度是否大于O(1)?

对于我最近写的一些algorithm,我认为哈希值是非常好的。 我认为我可以只使用对象中的成员variables作为键值对。 我不确定这是否是最佳的,因为我不知道幕后发生了什么。 我还假设V8与其他环境不同。 不过,我想,查找成员variables会相当快(希望)? 这一切都说,我想知道是否运行时间复杂的写作,阅读,创build和删除JavaScript对象的成员variables都是O(1)。 如果环境有差异(v8 vs其他),它们是什么?

为什么将类定义为final可以提高JVM的性能?

从http://sites.google.com/site/gson/gson-design-document引用: 为什么Gson中的大多数课程都被标记为final? 虽然Gson通过提供可插入序列化器和反序列化器提供了一个相当可扩展的体系结构,但Gson类并不是专门devise为可扩展的。 提供非最终的类将允许用户合法地扩展Gson类,然后期望该行为在所有后续的修订中都能正常工作。 我们select通过将类标记为final来限制这种使用情况,并等待一个好的用例出现以允许可扩展性。 标记一个类最终还有一个小优点,即为Java编译器和虚拟机提供额外的优化机会。 这是为什么? [如果我猜测:JVM知道类是final的,它不维护方法覆盖表? 还有其他原因吗?] 性能有什么好处? 这是否适用于频率实例化的类(POJO?),或者适用于持有静态方法的类(实用程序类)? 定义为最终的方法在理论上也可以提高性能? 有什么影响吗? 谢谢,Maxim。

在64位平台上的效率:指针与32位数组索引

Andrei Alexandrescu在他的一个主题演讲中build议,在64位平台上,使用32位数组索引比使用原始指针快: 第16页: http : //www.slideshare.net/andreialexandrescu1/three-optimization-tips-for-c-15708507 在他的Facebook账户上,他更精确地说:“更喜欢数组索引来指针(这个似乎每十年都会颠倒)”。 我已经尝试了很多东西来find差异,但我还没有设法build立任何显示这种差异的程序。 知道安德烈,我不会感到惊讶的是,差距不会超过百分之几,但是如果有人find这样的例子,我会很高兴。 这是我做的一个testing。 我selectn = 5000,足够大,以获得一个体面的时间,足够小,使一切都适合一级caching。 我循环几次,使CPU频率上升。 #include <iostream> #include <chrono> int main(int argc, const char* argv[]) { const int n{5000}; int* p{new int[n]}; // Warm up the cache for (int i{0}; i < n; i++) { p[i] += 1; } for (int j{0}; j < 5; j++) […]

包含,存在和任何性能的基准testing

我一直在寻找Contains , Exists和List<T>可用的Any方法之间的性能基准。 我只是出于好奇才发现这一点,因为我一直对此感到困惑。 关于这些方法的许多问题描述了这些方法的定义,如: LINQ环:任何()与包含()巨大的集合 Linq。任何VS.Exists – 有什么区别? LINQ扩展方法 – Any()与Where()与Exists() 所以我决定自己做。 我将其添加为答案。 对结果有更多的了解是最受欢迎的。 我也做了这个基准arrays来看结果

在Python中使用exception还是返回代码更好?

您可能会从Microsoft获知有关在.NET中使用例外情况的build议: 性能考虑 … 仅在特殊情况下抛出exception… 另外,当返回码足够时,不要抛出exception。 (请参阅http://msdn.microsoft.com/en-us/library/system.exception.aspx上的全文 。 作为比较的一点,你会推荐相同的Python代码?

传递整数作为常量引用与复制

这可能是一个愚蠢的问题,但我注意到,在大量的API中,很多方法签名采用整数参数,而不是被修改的: void method(int x); 而不是: void method(const int &x); 对我来说,看起来这两个function完全一样。 (编辑:显然不是在某些情况下,看到R塞缪尔Klatchko答案)在前者,价值被复制,因此不能改变原来的。 在后者中,通过了一个不变的引用,所以原文不能改变。 我想知道的是,为什么一个人会这么做,是因为他们的performance与前者基本相同甚至更好? 例如传递一个16位值或32位值而不是32位或64位地址? 这是我能想到的唯一合乎逻辑的原因,我只想知道这是否正确,如果不是这样,为什么以及何时您更喜欢int x不是const int &x和/或反之亦然。 谢谢。

为什么Android Studio在编辑xml文件或更改devise时速度变慢?

我有一个惠普羡慕笔记本电脑与英特尔i7和8GB内存和2GB的graphics,有时仍然Android工作室stucks当我正在使用XML或devise应用程序。 我的笔记本电脑或Android工作室有任何问题吗?