npmtest-voxel (v0.0.1)

Code coverage report for node-npmtest-voxel/node_modules/voxel/bench/meshers.js

Statements: 7.41% (2 / 27)      Branches: 0% (0 / 2)      Functions: 0% (0 / 7)      Lines: 7.69% (2 / 26)      Ignored: none     

All files » node-npmtest-voxel/node_modules/voxel/bench/ » meshers.js
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 532                                                                   1                                    
var meshers = require('../').meshers
  , generators = require('../').generator
  , microtime = require('microtime')
  , times = {}
 
var chunkSize = 32
  , iterations = 10
 
Object.keys(meshers).forEach(function(mesherName) {
  var mesher = meshers[mesherName]
    , meshTimes = times[mesherName] = {}
 
  process.stdout.write('benchmarking ' + mesherName)
 
  Object.keys(generators).forEach(function(generatorName) {
    var generator = generators[generatorName]
      , array = new Int8Array(4096)
      , n = 0
 
    for (var x = 0; x < chunkSize; x += 1)
      for (var y = 0; y < chunkSize; y += 1)
        for (var z = 0; z < chunkSize; z += 1, n += 1)
          array[n] = generator(x, y, z) || 0
 
    var start = microtime.now()
    for (var i = 0; i < iterations; i += 1) mesher(array, [chunkSize, chunkSize, chunkSize])
    meshTimes[generatorName] = microtime.now() - start
 
    process.stdout.write('.')
  })
 
  process.stdout.write('\n')
})
 
function limit(n) {
  return (n + '').slice(0, 6)
}
 
console.log('\nResults:')
Object.keys(times).forEach(function(mesher) {
  var meshTimes = times[mesher]
    , meshKeys = Object.keys(meshTimes)
    , meshTotal = meshKeys.reduce(function(n, k) { return meshTimes[k] + n }, 0)
 
  console.log('└─ ' + mesher + ': ' + limit(meshTotal / 1000 / iterations) + 'ms')
 
  meshKeys.sort(function(a, b) {
    return meshTimes[a] - meshTimes[b]
  }).forEach(function(key) {
    console.log('  └─ ' + key + ': ' + limit(meshTimes[key] / 1000 / iterations) + 'ms')
  })
})