JavaScript — почему функция webAssembly почти в 300 раз медленнее, чем та же функция JS

Все вещи, связанные с проблемой.

Найдите длину строки.

Оригинальный источник на пользовательском языке

// declare func the {amp}lt; indicates export name, the param with types and return type func {amp}lt;lengthF(float x, float y, float x1, float y1) float { float nx, ny, dist; // declare locals float is f32 nx = x1 - x; ny = y1 - y; dist = sqrt(ny * ny   nx * nx); return dist; } // and as double func {amp}lt;length(double x, double y, double x1, double y1) double { double nx, ny, dist; nx = x1 - x; ny = y1 - y; dist = sqrt(ny * ny   nx * nx); return dist; } 

Код компилируется в Wat для чтения корректуры

 (module (func (export "lengthF") (param f32 f32 f32 f32) (result f32) (local f32 f32 f32) get_local 2 get_local 0 f32.sub set_local 4 get_local 3 get_local 1 f32.sub tee_local 5 get_local 5 f32.mul get_local 4 get_local 4 f32.mul f32.add f32.sqrt ) (func (export "length") (param f64 f64 f64 f64) (result f64) (local f64 f64 f64) get_local 2 get_local 0 f64.sub set_local 4 get_local 3 get_local 1 f64.sub tee_local 5 get_local 5 f64.mul get_local 4 get_local 4 f64.mul f64.add f64.sqrt ) ) 

Понравилась статья? Поделиться с друзьями:
JavaScript & TypeScript
Adblock
detector