From 5f547131ab77394356df1a43d0e39c7987a3b016 Mon Sep 17 00:00:00 2001 From: Max Graey Date: Wed, 6 Mar 2019 22:27:54 +0200 Subject: [PATCH] Update nbody example for Rust (#528) --- examples/n-body/README.md | 14 ++++++++------ examples/n-body/build/rust.optimized.wasm | Bin 13059 -> 2139 bytes examples/n-body/rust/Cargo.lock | 2 ++ examples/n-body/rust/README.md | 4 ++-- examples/n-body/rust/index.js | 4 ++-- examples/n-body/rust/src/lib.rs | 8 ++++---- 6 files changed, 18 insertions(+), 14 deletions(-) mode change 100755 => 100644 examples/n-body/build/rust.optimized.wasm diff --git a/examples/n-body/README.md b/examples/n-body/README.md index 257b4a20..94cd3a11 100644 --- a/examples/n-body/README.md +++ b/examples/n-body/README.md @@ -32,16 +32,18 @@ Benchmark ***Environment:*** - MacBook Pro (Retina, 15-inch, Late 2013) - macOS 10.14.3 -- node.js v11.9.0 -- rustc 1.33.0-nightly (ceb251214 2019-01-16) +- node.js v11.10.1 +- rustc 1.35.0-nightly (a9da8fc9c 2019-03-04) ***Results:*** | Target | Time, ***ms*** | Size, ***KB*** | |-------------------------|-----------------|----------------| -| **AssemblyScript WASM** | **2901** | **2** | -| AssemblyScript ASMJS | 3720 | 19* | -| JavaScript | 2716 | 5* | -| Rust WASM | 2883 | 13 | +| **AssemblyScript WASM** | **2921** | **2** | +| AssemblyScript ASMJS | 3807 | 19* | +| JavaScript | 2757 | 5* | +| Rust WASM | 2866 | 20 / 2** | ___* unminified___ + +___** after wasm-gc___ diff --git a/examples/n-body/build/rust.optimized.wasm b/examples/n-body/build/rust.optimized.wasm old mode 100755 new mode 100644 index 7c0c91db60df5c68285c9d3cf415a43e3441b32d..7b47249b2a54c22d08ab5ffd6a666e70c265aa7b GIT binary patch literal 2139 zcmb7FU2GIp6ux)<_Gfm>HuyvQmZXu~I zblVu{n>9dEz=YZDgOC~_(U?Y&-Jp^ps00&jV?s)Z3EBq=s6ma1=iHfHwvW!ko$r3< z-0z-q?wmWsO!rYj2n~oGgme&^>7c_zlqH}9Nv8djQdy*=TB#O>No-=YNYv8X^PHme zS$(?)h6JL<#iHTtXjx@HSN0XWS zvVYhg_P!bDEcV^S0(= zz7zRL&7aqN`CJrth_Ui+9#$r6%A~hMk{Bnw%nyrrBq+k;v{8vTN+?oE-cLpWi|g6k zqY)-;4iZ&`tx4fek)h1hW8qF)n!~YiNGtPG*gK z8*v{SnVVoz5zK>$Gxms~1(2B-ahX|Qg2-GcG2^3#R)x&iDEPEpd-2@G)-N^|C!@GS zj6nUp75gw1%gO@$)PwLv*sO}lOV>fzuuf$D%5@S`!B=1b7%2rW^pT!4c$<1Z|FOoIrriq_okzUP6Sx2IzxDah7HQ@iUkPAm%iQNnCOarZTz~ z0Vod7<;P*p&tV3D*EO7&%sIkXTPe@D;vzWsa+)7fW?bqX5UNAijB8}^C|stjfu{jW zxW-95nVePyRdF=V0I|#=T#ad9LM~I*;OFOR%!30oufPOX<0cS74*MGl&f{1FMt0j4 zHTdUw1;WKf#wyIZn3rI_G%3{;Dvaj`iHi&}#zk;3K&s9?;AM~_hg=)$Au`Cy^@DUu zevn6nALJ}Dh#Zd@^dMwJHuExwl|$6y{Q|AT8H^P=#j)Z9zHw)=BvuJy@L>#GTV)V~ zqa9!n!+mY6yRRIBdOwB$tBis7Ua=wuXj?}GV}P!5CQD-QqjnIr;oi!#WvGqFW+Bw( z5cA`0cn>6yK{>b^94k(sKb=XXw)zMW3`SyfOOS|02o}P{uMxbCR5dS9=a-;P2;_f0 z?mb|vooj8f-&k&BeqLFe8oyImTv*ln*MZLpXD=T*u5{hdk00Lm$DRF(@u26mV?SLz zT9|E|nmh8!q~7&S! zc<9ruxAe(>zN)|AxuO4Q?cF|hDOdRL=)>)IPj={Jqm(lHEZQoO)dPFdgYi`7?&MHQ zi<#VOrV>_5OZWQ5NHo%rj3%0%ZH_i1P3KoE@ISHW{)l(@`UiF=_av-=wBYSEQ(b$^ zE{jU9f}qq8sb3cWbHYletz>QI5S4MG#H#wb#&va(+SIPD?!n$6R%1q!X7kQOG{Im= Mv^LUM8);heAFdKGqW}N^ literal 13059 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 { - throw Error("abort called at " + line + ":" + colum); + abort: (_filename, line, column) => { + throw Error("abort called at " + line + ":" + column); } } }; diff --git a/examples/n-body/rust/src/lib.rs b/examples/n-body/rust/src/lib.rs index a1c32b84..ce295d07 100644 --- a/examples/n-body/rust/src/lib.rs +++ b/examples/n-body/rust/src/lib.rs @@ -1,6 +1,6 @@ // Code adopted from https://benchmarksgame-team.pages.debian.net/benchmarksgame/program/nbody-rust-1.html -#![feature(core_intrinsics, panic_implementation)] +#![feature(core_intrinsics)] #![no_std] use core::intrinsics; @@ -156,18 +156,18 @@ fn offset_momentum(bodies: &mut [Planet; N_BODIES]) { } #[no_mangle] -pub unsafe extern "C" fn init() { +pub unsafe extern fn init() { offset_momentum(&mut BODIES); } #[no_mangle] -pub unsafe extern "C" fn step() -> f64 { +pub unsafe extern fn step() -> f64 { advance(&mut BODIES, 0.01); energy(&BODIES) } #[no_mangle] -pub unsafe extern "C" fn bench(steps: i32) { +pub unsafe extern fn bench(steps: i32) { for _ in 0..steps { advance(&mut BODIES, 0.01); }