Tag: 性能

为什么要改变对性能不好的]?

从标准的 setPrototypeOf函数的MDN文档以及非标准的__proto__属性 : 无论如何实现这个对象的[[Prototype]],我们强烈build议不要这么做,因为它非常缓慢,不可避免地会减慢现代JavaScript实现中的后续执行。 使用Function.prototype添加属性是将成员函数添加到JavaScript类的方法。 然后如下所示: function Foo(){} function bar(){} var foo = new Foo(); // This is bad: //foo.__proto__.bar = bar; // But this is okay Foo.prototype.bar = bar; // Both cause this to be true: console.log(foo.__proto__.bar == bar); // true 为什么是foo.__proto__.bar = bar; 坏? 如果它的坏不是Foo.prototype.bar = bar; 一样糟糕? 那么为什么这个警告: 这是非常缓慢的,不可避免地减慢了现代JavaScript实现的后续执行 。 当然Foo.prototype.bar = […]

通过原型定义方法vs在构造函数中使用它 – 真的是性能差异?

在JavaScript中,我们有两种方法来创build一个“类”并赋予其公共职能。 方法1: function MyClass() { var privateInstanceVariable = 'foo'; this.myFunc = function() { alert(privateInstanceVariable ); } } 方法2: function MyClass() { } MyClass.prototype.myFunc = function() { alert("I can't use private instance variables. :("); } 我读过无数次的人说 ,使用方法2更有效,因为所有的实例共享相同的函数副本,而不是每个都获得自己的副本。 通过原型定义函数有一个巨大的缺点 – 它使得不可能有私有的实例variables。 尽pipe从理论上讲,使用方法1给每个对象的实例提供了自己的函数副本(因此使用更多的内存,更不用说分配所需的时间了) – 实际上实际发生了什么? 看起来像一个优化的Web浏览器可以很容易地认识到这个非常普遍的模式,并且实际上所有的对象实例引用通过这些“构造函数”定义的相同的函数副本。 然后,如果稍后显式更改,则只能为该实例提供自己的副本。 任何见解 – 或者甚至更好的现实世界的经验 – 关于两者之间的performance差异将是非常有用的。

将使用'var'影响性能?

之前我问了一个关于为什么我看到这么多的例子使用var关键字的问题,并得到了答案,虽然它只是匿名types的必要条件,但是它仍然被用来使代码“更快”/更容易和“只是因为”。 在这个链接之后(“C#3.0 – Var is not Objec”),我看到这个var被编译成IL中的正确types(你会在中途看到它)。 我的问题是,如果使用var关键字,IL代码还有多less(如果有的话),并且如果在任何地方都使用代码,它会更接近于在代码性能方面有一个可衡量的级别?

最快的方法来检查列表中是否存在一个值

我正在寻找最快的方法来知道一个列表中是否存在一个值(一个有数百万个值的列表)以及它的索引是什么? 我知道列表中的所有值都是独特的,就像我的例子。 我尝试的第一种方法是(在我的真实代码中为3.8秒): a = [4,2,3,1,5,6] if a.count(7) == 1: b=a.index(7) "Do something with variable b" 我尝试的第二种方法是(快两倍:我的真实代码1.9秒): a = [4,2,3,1,5,6] try: b=a.index(7) except ValueError: "Do nothing" else: "Do something with variable b" 来自Stackoverflow用户的build议方法(在我的真实代码上2.74秒): a = [4,2,3,1,5,6] if 7 in a: a.index(7) 在我的实际代码中,第一个方法需要3.81秒,第二个方法需要1.88秒。 这是一个很好的改进,但是: 我是一个Python /脚本编程的初学者,我想知道是否有最快的方法来做同样的事情,并节省更多的处理时间? 我的应用程序更具体的说明: 在搅拌机的API中,可以访问粒子列表: particles = [1,2,3,4…etc.] 从那里,我可以访问它的位置: particles[x].location = [x,y,z] 而且我通过search每个粒子的位置来testing每个粒子是否存在邻居: […]

如何为CUDA内核select网格和块维度?

这是一个关于如何确定CUDA网格,块和线程大小的问题。 这是在这里发布的另一个问题: https://stackoverflow.com/a/5643838/1292251 在这个链接之后,来自talonmies的答案包含一个代码片段(见下文)。 我不明白“调整和硬件限制通常select的价值”的评论。 我还没有find一个很好的解释或澄清,在CUDA文档中解释这一点。 总之,我的问题是如何确定给出以下代码的最佳块大小 (=线程数): const int n = 128 * 1024; int blocksize = 512; // value usually chosen by tuning and hardware constraints int nblocks = n / nthreads; // value determine by block size and total work madd<<<nblocks,blocksize>>>mAdd(A,B,C,n); 顺便说一句,我开始我的问题与上面的链接,因为它部分回答我的第一个问题。 如果这不是一个正确的方式提出堆栈溢出的问题,请原谅或劝告我。

SQL Server中的INNER JOIN与LEFT JOIN性能

我创build了SQL命令使用INNER JOIN 9个表,无论如何这个命令需要很长时间(超过五分钟)。 所以我的民众build议我把INNER JOIN改为LEFT JOIN,因为LEFT JOIN的performance更好,尽pipe我知道它是第一次。 改变之后,查询速度明显提高。 我想知道为什么LEFT JOIN比INNER JOIN快? 我的SQL命令如下所示: SELECT * FROM A INNER JOIN B ON … INNER JOIN C ON … INNER JOIN D等等 更新:这是我的模式的简短。 FROM sidisaleshdrmly a — NOT HAVE PK AND FK INNER JOIN sidisalesdetmly b — THIS TABLE ALSO HAVE NO PK AND FK ON a.CompanyCd = […]

for循环和for-each循环之间是否有性能差异?

如果有的话,以下两个循环之间的性能差异是什么? for (Object o: objectArrayList) { o.DoSomething(); } 和 for (int i=0; i<objectArrayList.size(); i++) { objectArrayList.get(i).DoSomething(); }

Javareflection性能

使用reflection创build对象而不是调用类构造函数会导致任何显着的性能差异?

最好的方法来select随机行PostgreSQL

我想在PostgreSQL中随机select行,我试过这个: select * from table where random() < 0.01; 但其他一些build议: select * from table order by random() limit 1000; 我有一张有5亿行的非常大的桌子,我希望它快。 哪种方法更好? 有什么区别? 什么是select随机行的最佳方式?

string与StringBuilder

我理解String和StringBuilder ( StringBuilder是可变的)之间的区别,但是两者之间有很大的性能差异吗? 我正在处理的程序有很多情况驱动的string附加(500+)。 使用StringBuilder是一个更好的select?