@@ -437,25 +437,42 @@ export function bg4_regoup_bytes(bytes: Uint8Array): Uint8Array {
437437 const g3_pos = g2_pos + split + ( rem == 3 ? 1 : 0 ) ;
438438
439439 const ret = new Uint8Array ( bytes . length ) ;
440- for ( let i = 0 ; i < bytes . length - 3 ; i += 4 ) {
441- ret [ i ] = bytes [ i / 4 ] ;
442- ret [ i + 1 ] = bytes [ g1_pos + i / 4 ] ;
443- ret [ i + 2 ] = bytes [ g2_pos + i / 4 ] ;
444- ret [ i + 3 ] = bytes [ g3_pos + i / 4 ] ;
440+ for ( let i = 0 , j = 0 ; i < bytes . length ; i += 4 , j ++ ) {
441+ ret [ i ] = bytes [ j ] ;
445442 }
446443
447- if ( rem === 1 ) {
448- ret [ bytes . length - 1 ] = bytes [ g1_pos - 1 ] ;
449- } else if ( rem === 2 ) {
450- ret [ bytes . length - 2 ] = bytes [ g1_pos - 1 ] ;
451- ret [ bytes . length - 1 ] = bytes [ g2_pos - 1 ] ;
452- } else if ( rem === 3 ) {
453- ret [ bytes . length - 3 ] = bytes [ g1_pos - 1 ] ;
454- ret [ bytes . length - 2 ] = bytes [ g2_pos - 1 ] ;
455- ret [ bytes . length - 1 ] = bytes [ g3_pos - 1 ] ;
444+ for ( let i = 1 , j = g1_pos ; i < bytes . length ; i += 4 , j ++ ) {
445+ ret [ i ] = bytes [ j ] ;
446+ }
447+
448+ for ( let i = 2 , j = g2_pos ; i < bytes . length ; i += 4 , j ++ ) {
449+ ret [ i ] = bytes [ j ] ;
450+ }
451+
452+ for ( let i = 3 , j = g3_pos ; i < bytes . length ; i += 4 , j ++ ) {
453+ ret [ i ] = bytes [ j ] ;
456454 }
457455
458456 return ret ;
457+
458+ // alternative implementation (to benchmark which one is faster)
459+ // for (let i = 0; i < bytes.length - 3; i += 4) {
460+ // ret[i] = bytes[i / 4];
461+ // ret[i + 1] = bytes[g1_pos + i / 4];
462+ // ret[i + 2] = bytes[g2_pos + i / 4];
463+ // ret[i + 3] = bytes[g3_pos + i / 4];
464+ // }
465+
466+ // if (rem === 1) {
467+ // ret[bytes.length - 1] = bytes[g1_pos - 1];
468+ // } else if (rem === 2) {
469+ // ret[bytes.length - 2] = bytes[g1_pos - 1];
470+ // ret[bytes.length - 1] = bytes[g2_pos - 1];
471+ // } else if (rem === 3) {
472+ // ret[bytes.length - 3] = bytes[g1_pos - 1];
473+ // ret[bytes.length - 2] = bytes[g2_pos - 1];
474+ // ret[bytes.length - 1] = bytes[g3_pos - 1];
475+ // }
459476}
460477
461478async function getAccessToken (
0 commit comments