復制代碼代碼如下: // 創建一個8-byte的ArrayBuffer var b = new ArrayBuffer(8); // 創建一個b的引用,類型是Int32,起始位置在0,結束位置為緩沖區尾部 var v1 = new Int32Array(b); // 創建一個b的引用,類型是Uint8,起始位置在2,結束位置為緩沖區尾部 var v2 = new Uint8Array(b, 2); // 創建一個b的引用,類型是Int16,起始位置在2,總長度為2 var v3 = new Int16Array(b, 2, 2);
則緩沖和創建的引用布局為:
這表示Int32類型的v1數組的第0個元素是ArrayBuffer類型的b的第0-3個字節,如此等等。 上面我們通過ArrayBuffer來創建TypedArray,而實際上,TypedArray提供了3個html' target='_blank'>構造函數來創建他的實例。 構造函數 復制代碼代碼如下: TypedArray(unsigned long length) 創建一個新的TypedArray,length是其固定長度。
復制代碼代碼如下: // function check1(){ var array = new Uint8ClampedArray(5000000); for(var i = array.length; i--;){ array[i] = Math.floor(Math.random() * 100); } var temp; var time1 = (new Date()).getTime(); for(var i = array.length; i--;){ temp = array[Math.floor(Math.random() * 5000000)]; } var time2 = (new Date()).getTime(); console.log(time2 - time1); timeArray1.push(time2 - time1); } function check2(){ var array2 = new Array(5000000); for(var i = array2.length; i--;){ array2[i] = Math.floor(Math.random() * 100); } var temp; var time3 = (new Date()).getTime(); for(var i = array2.length; i--;){ temp = array2[Math.floor(Math.random() * 5000000)]; } var time4 = (new Date()).getTime(); console.log(time4 - time3); timeArray2.push(time4 - time3); } //
復制代碼代碼如下: // function check1(){ var array = new Uint8ClampedArray(5000000); var time1 = (new Date()).getTime(); for(var i = array.length; i--;){ array[i] = Math.floor(Math.random() * 100); } var time2 = (new Date()).getTime(); console.log(time2 - time1); timeArray1.push(time2 - time1); } function check2(){ var array2 = new Array(5000000); var time3 = (new Date()).getTime(); for(var i = array2.length; i--;){ array2[i] = Math.floor(Math.random() * 100); } var time4 = (new Date()).getTime(); console.log(time4 - time3); timeArray2.push(time4 - time3); } //
Test4:復制操作(U8C to U8C和 Array to U8C)
復制代碼代碼如下: // function check1(){ var array = new Uint8ClampedArray(5000000); for(var i = array.length; i--;){ array[i] = Math.floor(Math.random() * 100); } var temp; var array2 = new Uint8ClampedArray(5000000); var time1 = (new Date()).getTime(); array2.set(array); var time2 = (new Date()).getTime(); console.log(time2 - time1); timeArray2.push(time2 - time1); } function check2(){ var array = new Array(5000000); for(var i = array.length; i--;){ array[i] = Math.floor(Math.random() * 100); } var temp; var array2 = new Uint8ClampedArray(5000000); var time1 = (new Date()).getTime(); array2.set(array); var time2 = (new Date()).getTime(); console.log(time2 - time1); timeArray2.push(time2 - time1); } //