首先上一张图在有15条蛇,同时每个的长度是50000个身体,在进行前进的时候遍历这么多申请GameLogic 占用时间多主要用到了array的push 和unshift。
------优化前-----------
-----优化后-------
从原理就可以知道,unshift的效率是较低的。原因是,它每添加一个元素,都要把现有元素往下移一个位置。但到底效率差异有多大呢?下面来测试一下。
以下一下代码是默认array 的测试数据和自定义链表的测试数据。
let array = []
let arrayLabel: string = 'array push性能测试(毫秒)';
console.time(arrayLabel);
//push性能测试
for (let i = 0; i < 50000; i++) {
array.push(i);
}
console.timeEnd(arrayLabel);
let linkList = new LinkList<number>();
arrayLabel = 'linkList push性能测试(毫秒)';
console.time(arrayLabel);
//push性能测试
for (let i = 0; i < 50000; i++) {
linkList.push(i);
}
console.timeEnd(arrayLabel);
arrayLabel = 'array unshift 性能测试(毫秒)';
array = [ ];
//unshift性能测试
console.time(arrayLabel);
for (let i = 0; i < 50000; i++) {
array.unshift(i);
}
console.timeEnd(arrayLabel);
arrayLabel = 'linkList unshift 性能测试(毫秒)';
let linkList2 = new LinkList<number>();
//unshift性能测试
console.time(arrayLabel);
for (let i = 0; i < 50000; i++) {
linkList.unshift(i);
}
console.timeEnd(arrayLabel);
arrayLabel = 'array push 一个 性能测试(毫秒)';
console.time(arrayLabel);
array.push(121212);
console.timeEnd(arrayLabel);
arrayLabel = 'linkList push 一个性能测试(毫秒)';
console.time(arrayLabel);
linkList.push(121212);
console.timeEnd(arrayLabel);
arrayLabel = 'array unshift 一个 性能测试(毫秒)';
console.time(arrayLabel);
array.unshift(121212);
console.timeEnd(arrayLabel);
arrayLabel = 'linkList unshift 一个性能测试(毫秒)';
console.time(arrayLabel);
linkList.unshift(121212);
console.timeEnd(arrayLabel);
原文链接
关注公众号