I've created a simple NeuralNet program 
<https://github.com/winksaville/test-nn-ts> in TypeScript v2.3.4 running on 
node v8.1.0 and v8 v5.8.283.41:

$ npm version
> { 'test-nn-ts': '0.1.0',
>   npm: '4.6.1',
>   ares: '1.12.0',
>   cldr: '31.0.1',
>   http_parser: '2.7.1',
>   icu: '59.1',
>   modules: '57',
>   node: '8.1.0',
>   openssl: '1.0.2l',
>   tz: '2017b',
>   unicode: '9.0',
>   uv: '1.12.0',
>   v8: '5.8.283.41',
>   zlib: '1.2.11' }


When I target es6 the program runs 6x slower than if target es5.

Here is the output when targeting es5:

$ yarn runit 1000000
> yarn runit v0.24.6
> $ yarn build && yarn doit 1000000
> yarn build v0.24.6
> $ tsc -p src/tsconfig.json 
> Done in 2.02s.
> yarn doit v0.24.6
> $ node build/test-nn.js 1000000
> Epoch=1,000,000 Error=4.63e-7 time=2.06s eps=484,784
> Pat Input0 Input1 Target0 Output0
> 0 0 0 0 0.000448827454864753
> 1 1 0 1 0.9995444354288804
> 2 0 1 1 0.9995445564977191
> 3 1 1 0 0.0005558910332638871
> Done in 2.24s.
> Done in 4.63s.


And here is the output targeting es6:

$ yarn runit 1000000
> yarn runit v0.24.6
> $ yarn build && yarn doit 1000000
> yarn build v0.24.6
> $ tsc -p src/tsconfig.json 
> Done in 1.99s.
> yarn doit v0.24.6
> $ node build/test-nn.js 1000000
> Epoch=1,000,000 Error=4.63e-7 time=13.29s eps=75,239
> Pat Input0 Input1 Target0 Output0
> 0 0 0 0 0.000448827454864753
> 1 1 0 1 0.9995444354288804
> 2 0 1 1 0.9995445564977191
> 3 1 1 0 0.0005558910332638871
> Done in 13.47s.
> Done in 15.84s.


Here is a snippet of the beginning of the NeuralNet.js targeting es5:

var Neuron_1 = require("./Neuron");
> var DBG = false;
> var Debug_1 = require("./Debug");
> var NeuralNet = (function () {
>     function NeuralNet(num_in_neurons, num_hidden_layers, num_out_neurons) 
> {
>         if (DBG)
>             Debug_1.default("ctor:+ in_neurons=" + num_in_neurons + " 
> hidden_layers=" + num_hidden_layers + " out_neurons=" + num_out_neurons);
>         this.max_layers = 2; // We always have an input and output layer
>         this.max_layers += num_hidden_layers; // Add num_hidden layers
>         this.out_layer = this.max_layers - 1; // last one is out_layer
>         this.last_hidden = 0; // No hidden layers yet
>         this.points = 0; // No points yet
>         this.error = 0; // No errors yet
>         this.learning_rate = 0.5; // Learning rate aka eta
>         this.momentum_factor = 0.9; // momemtum factor aka alpha
>         this.layers = new Array(this.max_layers);
>         // Create the input and output layers
>         this.create_layer(0, num_in_neurons);
>         this.create_layer(this.out_layer, num_out_neurons);
>         if (DBG)
>             Debug_1.default("ctor:-");
>     }
>     NeuralNet.prototype.create_layer = function (layer_index, num_neurons) 
> {
>         if (DBG)
>             Debug_1.default("create_layer:+ layer_index=" + layer_index + 
> " num_neurons=" + num_neurons);
>         this.layers[layer_index] = new Array(num_neurons);
>         if (DBG)
>             Debug_1.default("create_layer:- layer_index=" + layer_index + 
> " num_neurons=" + num_neurons);
>     };



And here is a snippet targeting es6:

const Neuron_1 = require("./Neuron");
> const DBG = false;
> const Debug_1 = require("./Debug");
> class NeuralNet {
>     constructor(num_in_neurons, num_hidden_layers, num_out_neurons) {
>         if (DBG)
>             Debug_1.default(`ctor:+ in_neurons=${num_in_neurons} 
> hidden_layers=${num_hidden_layers} out_neurons=${num_out_neurons}`);
>         this.max_layers = 2; // We always have an input and output layer
>         this.max_layers += num_hidden_layers; // Add num_hidden layers
>         this.out_layer = this.max_layers - 1; // last one is out_layer
>         this.last_hidden = 0; // No hidden layers yet
>         this.points = 0; // No points yet
>         this.error = 0; // No errors yet
>         this.learning_rate = 0.5; // Learning rate aka eta
>         this.momentum_factor = 0.9; // momemtum factor aka alpha
>         this.layers = new Array(this.max_layers);
>         // Create the input and output layers
>         this.create_layer(0, num_in_neurons);
>         this.create_layer(this.out_layer, num_out_neurons);
>         if (DBG)
>             Debug_1.default("ctor:-");
>     }
>     create_layer(layer_index, num_neurons) {
>         if (DBG)
>             Debug_1.default(`create_layer:+ layer_index=${layer_index} 
> num_neurons=${num_neurons}`);
>         this.layers[layer_index] = new Array(num_neurons);
>         if (DBG)
>             Debug_1.default(`create_layer:- layer_index=${layer_index} 
> num_neurons=${num_neurons}`);
>     }


Have I done something wrong or is this expected?

-- Wink

-- 
-- 
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
--- 
You received this message because you are subscribed to the Google Groups 
"v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to