Skip to content
Snippets Groups Projects
Select Git revision
  • 0089cea975e0005b7fd28ac1774a17fb01417b96
  • master default protected
  • rednatco-v2
  • rednatco
  • test
  • ntc-tube-uniform-color
  • ntc-tube-missing-atoms
  • restore-vertex-array-per-program
  • watlas2
  • dnatco_new
  • cleanup-old-nodejs
  • webmmb
  • fix_auth_seq_id
  • update_deps
  • ext_dev
  • ntc_balls
  • nci-2
  • plugin
  • bugfix-0.4.5
  • nci
  • servers
  • v0.5.0-dev.1
  • v0.4.5
  • v0.4.4
  • v0.4.3
  • v0.4.2
  • v0.4.1
  • v0.4.0
  • v0.3.12
  • v0.3.11
  • v0.3.10
  • v0.3.9
  • v0.3.8
  • v0.3.7
  • v0.3.6
  • v0.3.5
  • v0.3.4
  • v0.3.3
  • v0.3.2
  • v0.3.1
  • v0.3.0
41 results

string-builder.ts

Blame
  • string-builder.ts 1.68 KiB
    import * as B from 'benchmark'
    import SB from 'mol-util/string-builder'
    
    export namespace Test {
        function createData(n: number) {
            const ret: string[] = [];
            for (let i = 0; i < n; i++) {
                ret[i] = '' + ((100000000 * Math.random() + 1) | 0);
            }
            return ret;
        }
    
        function build(data: string[], chunkSize: number): SB {
            const sb = SB.create(chunkSize);
            for (let i = 0, _i = data.length; i < _i; i++) {
                SB.writeSafe(sb, data[i]);
                SB.whitespace1(sb);
            }
            return sb;
        }
    
        function buildWS(data: string[], chunkSize: number): SB {
            const sb = SB.create(chunkSize);
            for (let i = 0, _i = data.length; i < _i; i++) {
                SB.writeSafe(sb, data[i] + ' ');
            }
            return sb;
        }
    
        // function naive(data: string[]) {
        //     let ret = '';
        //     for (let i = 0, _i = data.length; i < _i; i++) ret += data[i];
        //     return ret;
        // }
    
        // function join(data: string[]) {
        //     let ret = [];
        //     for (let i = 0, _i = data.length; i < _i; i++) ret[i] = data[i];
        //     return ret.join('');
        // }
    
        export function run() {
            const data = createData(26 * 100000);
    
            const N = 512;
            const suite = new B.Suite();
            suite
                // .add(`naive`, () => naive(data))
                // .add(`join`, () => join(data))
                // .add(`${N} chunks`, () => SB.getChunks(build(data, N)))
                .add(`${N} str`, () => SB.getString(build(data, N)))
                .add(`${N} str ws`, () => SB.getString(buildWS(data, N)))
                .on('cycle', (e: any) => console.log(String(e.target)))
                .run();
        }
    }
    
    Test.run();