草庐IT

最优化原理

全部标签

javascript - 检测在不可见和在视口(viewport)外时是否对canvas/css3动画进行了优化

我假设使用HTML5中的所有这些硬件加速动画,实际上不会渲染在视口(viewport)之外运行的动画。我希望能够检测到是否正在发生。我尝试在每秒移动100px的对象上循环使用webkitCSSMatrix来尝试确定每个刻度线移动了多少像素,但是如果我将动画移出视线则没有区别。有任何想法吗? 最佳答案 您可以使用单独的计时器测试来查看伪经验方面在外部和内部绘制的对象之间的差异(计时器实际上并不能证明任何东西,但可以为您提供强大的indisium)。但是,了解Canvas的工作原理也可以为您提供坚实的指导。例如,Canvas是一个简单的

javascript - 如何获取优化掉的变量值?

一些变量可以在Javascript执行期间被“优化掉”。因此,此类变量的值在调试时不可用于检查(Userdocumentation)。变量View显示(优化掉)消息,如果尝试评估变量,控制台会抛出以下错误:Error:variablehasbeenoptimizedout有什么方法可以在Firefox中强制评估此类变量或禁用此优化? 最佳答案 以防止这种优化的方式使用变量。functionNOP(){}//thenintheoptimisedcodeNOP(myvar);//debugginghereshouldnowshow`my

javascript - 关于 JavaScript 工作原理的几个问题

我最近一直在深入研究JavaScript以完全理解这门语言,并且有一些我似乎无法找到答案的烦人问题(特别是处理面向对象编程)。假设以下代码:functionTestObject(){this.fA=function(){//dostuff}this.fB=testB;functiontestB(){//dostuff}}TestObject.prototype={fC:function{//dostuff}}函数fA和fB有什么区别?它们在范围和潜在能力上的表现是否完全相同?这只是惯例,还是一种技术上更好或更合适的方法?如果在任何给定时间只有一个对象的实例,向原型(prototype)

javascript - NodeJS 循环优化

我知道在浏览器中,按照for(vari=0,l=arr.length;i代替for(vari=0;i但是在NodeJS中是这样还是V8引擎优化了呢?我知道ecma-2625.1sec-15.4数组长度定义如下:Thevalueofthelengthpropertyisnumericallygreaterthanthenameofeverypropertywhosenameisanarrayindex;wheneverapropertyofanArrayobjectiscreatedorchanged,otherpropertiesareadjustedasnecessarytomain

javascript - 需要优化功能

我正在研究这个函数,它必须返回添加a和bn次的所有可能值,例如如果n=1那么可能的值将是a+aa+b和b+b。下面的功能有效,但它太慢了,我想优化它。有什么建议么?非常感谢!functionprocessData(n,a,b){varans=[0];for(vari=0;i 最佳答案 functionprocessData(n,a,b){varans=[];if(a==b){for(vari=0;ib){vartemp=a;a=b;b=temp;}vardiff=b-a;for(vari=0;i好的,这是迄今为止最有效的解决方案。我

javascript - 使用具有高级优化功能的 Closure 编译器时如何在 javascript 中保留全局变量?

我有自己的Javascript库,我想通过使用具有高级优化功能的Google闭包编译器来缩小它。通过查看docs我看到了如何声明在库外使用的函数。但是我找不到一种方法来保存在我的库中声明的全局变量。Closure编译器只是删除它们,因为它认为它们从未被使用过。有人可以帮忙吗?编辑:示例代码:varvariable_1=true;这是在我的库开始时全局定义的,但它从未在库本身中使用过。当它包含在某些页面中时,它会在库外使用。但是Closure编译器不知道,这就是它删除这些声明的原因。 最佳答案 闭包编译器无法移除声明为window["

ES数据存储和集群路由原理

ES数据存储1、存储流程为了将数据添加到Elasticsearch,我们需要索引(index)——一个存储关联数据的地方。实际上,索引  只是一个用来指向一个或多个分片(shards)的“逻辑命名空间(logicalnamespace)”.一个分片(shard)是一个最小级别“工作单元(workerunit)”,它只是保存了索引中所有数据的一部分。当一个写请求发送到es后,es将数据写入memorybuffer中,并添加事务日志(translog)。如果每次一条数据写入内存后立即写到硬盘文件上,由于写入的数据肯定是离散的,因此写入硬盘的操 作也就是随机写入了。硬盘随机写入的效率相当低,会严重降

javascript - 优化javascript代码以使用整数运算

有一些算法可以“非常好”地解决问题,前提是“非常好”意味着最小化浮点算术运算的数量以支持整数算术。以Bresenham'slinealgorithm为例为了弄清楚要填充哪些像素以便在Canvas上画一条线:这个人几乎只用了一些简单的整数运算就使整个过程变得可行。这种事情在很多情况下显然是好的。但是,在javascript中需要大量float学运算的操作值得担心吗?我知道就语言规范而言,一切都几乎是十进制数。我想知道是否实际上尝试让事情尽可能接近整数是否值得——浏览器是否进行了优化以使其值得? 最佳答案 您可以在javascript中

javascript - const 与内联字符串文字,编译优化

这不是问题,而是基于代码结构对V8优化的探索。我和另一位开发人员正在就V8的编译优化争论conststringliteralvsinlinestringliteral的值(value)。当然,假设我们始终处于严格模式。这里有一些代码示例放在上下文中:常量constNAME="something";functiondoSomething(s){returnNAME+s;}对比内联字符串functiondoSomething(s){return"something"+s;}我们的共识:-const为魔法值提供更多上下文,从而简化维护。我们不同意的地方:我说const的使用允许V8编译时优化

javascript - 这可以重构为使用通用功能原理吗?

比较器函数ascending接受两个参数-a和b。它必须返回一个比较两者的整数。我有一个列表,我想按名称排序,所以我写了下面的函数。是否有一个函数式惯用语可以用来组合这两个函数,而不是让byName负责组合结果函数?constascending=(a,b)=>a.localeCompare(b);constbyName=(i)=>i.get('name');constuseTogether=(...fns)=>...;//isthereanidiomaticfunctionlikethis?//usageitems.sort(useTogether(byName(ascending))