乘除法里都有pow,还有字符串操作,感觉性能堪忧
pow性能不错,只是乘法而已,sqrt消耗比较大。
字符串操作我也想避免,可是想知道小数位数的话我也没想到好办法,我已经尽可能的少使用字符串操作了,decimal里面用的比我这里还多。
测试了一下,将近慢了4倍,不过毫秒级的运算,影响不大吧
嗯,比普通使用肯定要慢,毕竟要转来转去。
具体有没有影响的话,还是要在实际项目中做分析。
我记得我之前好像测试过,少用sqrt方法,效率还是不错的,至少不会成为引起掉帧的主要原因。
同样的一次运算
eMath下

##decimal下

console.time不一定准确,但整体还是要比decimal快的
计算时间最好外面加一个for循环 100w次然后求一下平均时间
2020/06/06 更新:
【优化】去除所有字符串操作,性能提升30%
和原生写法性能差距大概多少呢?
拿上面的例子,原生写法只耗时2ms,eMath要600~700ms,300多倍
速度差多少还要取决小数位数的多少,开方等耗时操作的使用占比
赞,但暂时还不敢用,不确定源生提升的比例有多少,改了很多位置后万一速度反而慢了。
项目中使用了大量计算,持续关注
var a = gravity / 2;
var c = this.s[2];
var b = this.d[2] - a - c;
var x = this.inter(this.s[0], this.d[0], t); var y = this.inter(this.s[1], this.d[1], t); var h = (a * t + b) * t + c;
this.force_position(x, y); //此处设置在初始位置 this.offsety = h;
//目标的X - 起始X var dx = this.d[0] - this.s[0]; //目标的Y - 起始Y var dy = this.d[1] - this.s[1];
var dh = 2 * a * t + b;
var r = Math.atan2(-(dy + 0) / 1.414, dx); var l = Math.sqrt(dx * dx + dy * dy + dh * dh); dx = dx / l; dy = dy / l; dh = dh / l; this.sprite_.angle = -(cc.misc.radiansToDegrees(cc.v2(dx, dy).signAngle(cc.v2(1, 0))));
请教一下,我运用了大量使用此类运算,如果使用emath,会不会有提升
速度不会提升的,这个库是要比原生慢的~~~~
感谢。
慢也是一个思路。mark一下。
希望能有更进一步的优化呢。
加法和乘法还好,除法还是会有小数的吧
@那些问效率有没有提升的小伙子。
这个库,是帧同步的基础,目的不是拿来提升效率的吧。
3赞
大佬,5年过去了。这个库你在实际生产中有使用吗?能保证一致性吗?感谢回复
没用过,你去搜下xforge,用里面的定点数
好的。我看看,感谢