diff --git a/samples/wasm-lua-comparison/include/wasm.h b/samples/wasm-lua-comparison/include/wasm.h index 854d7c7d1..2bc9dacd8 100644 --- a/samples/wasm-lua-comparison/include/wasm.h +++ b/samples/wasm-lua-comparison/include/wasm.h @@ -10,4 +10,6 @@ void call_wasm_function(); void deInit_wasm(); +void thread_function(); + #endif \ No newline at end of file diff --git a/samples/wasm-lua-comparison/src/CMakeFiles/comparison.dir/luaModule.c.o b/samples/wasm-lua-comparison/src/CMakeFiles/comparison.dir/luaModule.c.o index d3dd57ba2..0935cff8d 100644 Binary files a/samples/wasm-lua-comparison/src/CMakeFiles/comparison.dir/luaModule.c.o and b/samples/wasm-lua-comparison/src/CMakeFiles/comparison.dir/luaModule.c.o differ diff --git a/samples/wasm-lua-comparison/src/CMakeFiles/comparison.dir/main.c.o b/samples/wasm-lua-comparison/src/CMakeFiles/comparison.dir/main.c.o index 7a5ac2bf4..be98b1377 100644 Binary files a/samples/wasm-lua-comparison/src/CMakeFiles/comparison.dir/main.c.o and b/samples/wasm-lua-comparison/src/CMakeFiles/comparison.dir/main.c.o differ diff --git a/samples/wasm-lua-comparison/src/CMakeFiles/comparison.dir/wasm.c.o b/samples/wasm-lua-comparison/src/CMakeFiles/comparison.dir/wasm.c.o index 42345be5f..1142ac468 100644 Binary files a/samples/wasm-lua-comparison/src/CMakeFiles/comparison.dir/wasm.c.o and b/samples/wasm-lua-comparison/src/CMakeFiles/comparison.dir/wasm.c.o differ diff --git a/samples/wasm-lua-comparison/src/comparison b/samples/wasm-lua-comparison/src/comparison index caa099a72..0ad0cbba6 100755 Binary files a/samples/wasm-lua-comparison/src/comparison and b/samples/wasm-lua-comparison/src/comparison differ diff --git a/samples/wasm-lua-comparison/src/core.100 b/samples/wasm-lua-comparison/src/core.100 new file mode 100644 index 000000000..7964459be Binary files /dev/null and b/samples/wasm-lua-comparison/src/core.100 differ diff --git a/samples/wasm-lua-comparison/src/core.135 b/samples/wasm-lua-comparison/src/core.135 new file mode 100644 index 000000000..7e9d331ca Binary files /dev/null and b/samples/wasm-lua-comparison/src/core.135 differ diff --git a/samples/wasm-lua-comparison/src/core.172 b/samples/wasm-lua-comparison/src/core.172 new file mode 100644 index 000000000..1b448e869 Binary files /dev/null and b/samples/wasm-lua-comparison/src/core.172 differ diff --git a/samples/wasm-lua-comparison/src/core.191 b/samples/wasm-lua-comparison/src/core.191 new file mode 100644 index 000000000..374986e53 Binary files /dev/null and b/samples/wasm-lua-comparison/src/core.191 differ diff --git a/samples/wasm-lua-comparison/src/core.249 b/samples/wasm-lua-comparison/src/core.249 new file mode 100644 index 000000000..c3b155016 Binary files /dev/null and b/samples/wasm-lua-comparison/src/core.249 differ diff --git a/samples/wasm-lua-comparison/src/core.268 b/samples/wasm-lua-comparison/src/core.268 new file mode 100644 index 000000000..d90b48ef9 Binary files /dev/null and b/samples/wasm-lua-comparison/src/core.268 differ diff --git a/samples/wasm-lua-comparison/src/core.276 b/samples/wasm-lua-comparison/src/core.276 new file mode 100644 index 000000000..adbabda74 Binary files /dev/null and b/samples/wasm-lua-comparison/src/core.276 differ diff --git a/samples/wasm-lua-comparison/src/core.315 b/samples/wasm-lua-comparison/src/core.315 new file mode 100644 index 000000000..a19ed7ff8 Binary files /dev/null and b/samples/wasm-lua-comparison/src/core.315 differ diff --git a/samples/wasm-lua-comparison/src/core.319 b/samples/wasm-lua-comparison/src/core.319 new file mode 100644 index 000000000..4737f00b7 Binary files /dev/null and b/samples/wasm-lua-comparison/src/core.319 differ diff --git a/samples/wasm-lua-comparison/src/core.352 b/samples/wasm-lua-comparison/src/core.352 new file mode 100644 index 000000000..91a440563 Binary files /dev/null and b/samples/wasm-lua-comparison/src/core.352 differ diff --git a/samples/wasm-lua-comparison/src/core.357 b/samples/wasm-lua-comparison/src/core.357 new file mode 100644 index 000000000..f546d4309 Binary files /dev/null and b/samples/wasm-lua-comparison/src/core.357 differ diff --git a/samples/wasm-lua-comparison/src/core.394 b/samples/wasm-lua-comparison/src/core.394 new file mode 100644 index 000000000..4870729c7 Binary files /dev/null and b/samples/wasm-lua-comparison/src/core.394 differ diff --git a/samples/wasm-lua-comparison/src/core.395 b/samples/wasm-lua-comparison/src/core.395 new file mode 100644 index 000000000..d74fad6bd Binary files /dev/null and b/samples/wasm-lua-comparison/src/core.395 differ diff --git a/samples/wasm-lua-comparison/src/core.433 b/samples/wasm-lua-comparison/src/core.433 new file mode 100644 index 000000000..66cd0524e Binary files /dev/null and b/samples/wasm-lua-comparison/src/core.433 differ diff --git a/samples/wasm-lua-comparison/src/core.468 b/samples/wasm-lua-comparison/src/core.468 new file mode 100644 index 000000000..2a675db14 Binary files /dev/null and b/samples/wasm-lua-comparison/src/core.468 differ diff --git a/samples/wasm-lua-comparison/src/core.507 b/samples/wasm-lua-comparison/src/core.507 new file mode 100644 index 000000000..e41f0974e Binary files /dev/null and b/samples/wasm-lua-comparison/src/core.507 differ diff --git a/samples/wasm-lua-comparison/src/luaModule.c b/samples/wasm-lua-comparison/src/luaModule.c index fd4f0b5ed..6a6a83dbd 100644 --- a/samples/wasm-lua-comparison/src/luaModule.c +++ b/samples/wasm-lua-comparison/src/luaModule.c @@ -45,5 +45,5 @@ void call_lua_function(lua_State* L) lua_pop(L,1); printf("sum: %d\n", sum); total_t=(double)(stop_t-start_t)/ CLOCKS_PER_SEC; - printf("Total time = %f\n", total_t); + printf("Lua Total time = %f\n", total_t); } \ No newline at end of file diff --git a/samples/wasm-lua-comparison/src/main.c b/samples/wasm-lua-comparison/src/main.c index 801a941d3..2caf15a5c 100644 --- a/samples/wasm-lua-comparison/src/main.c +++ b/samples/wasm-lua-comparison/src/main.c @@ -18,6 +18,11 @@ #include "luaModule.h" #include "wasm.h" +struct arg_struct { + int arg1; + int arg2; +}; + int main(int argc, char *argv[]) { @@ -38,9 +43,34 @@ main(int argc, char *argv[]) stop_t= clock(); printf("C sum: %d\n", test); total_t=(double)(stop_t-start_t)/ CLOCKS_PER_SEC; - printf("Total time = %f\n", total_t); + printf("Native total time = %f\n\n", total_t); - return 0; + printf("Starting thread example \n"); + pthread_t thread1, thread2, thread3; + int iret1, iret2, iret3; + struct arg_struct args; + args.arg1 = 2; + args.arg2 = 3; + + /* Create independent threads each of which will execute function */ + + iret1 = pthread_create( &thread1, NULL, call_wasm_function, NULL); + iret2 = pthread_create( &thread2, NULL, call_lua_function, L); + iret3 = pthread_create( &thread3, NULL, sum, (void*) &args); + /* Wait till threads are complete before main continues. Unless we */ + /* wait we run the risk of executing an exit which will terminate */ + /* the process and all threads before the threads have completed. */ + + pthread_join( thread1, NULL); + pthread_join( thread2, NULL); + start_t= clock(); + pthread_join( thread3, NULL); + stop_t= clock(); + printf("C sum: %d\n", test); + total_t=(double)(stop_t-start_t)/ CLOCKS_PER_SEC; + printf("Native Thread Total time = %f\n", total_t); + wasm_thread_function(); + exit(0); } int sum(int start, int length) @@ -53,4 +83,4 @@ int sum(int start, int length) } } return sum; -} +} \ No newline at end of file diff --git a/samples/wasm-lua-comparison/src/sum.py b/samples/wasm-lua-comparison/src/sum.py deleted file mode 100644 index 73469bf24..000000000 --- a/samples/wasm-lua-comparison/src/sum.py +++ /dev/null @@ -1,4 +0,0 @@ -def sum (start, length): - for x in range(0,10000000): - sum(x for x in range (start,length)) -sum(2,3) \ No newline at end of file diff --git a/samples/wasm-lua-comparison/src/wasm.c b/samples/wasm-lua-comparison/src/wasm.c index 40e798586..efba9dbaa 100644 --- a/samples/wasm-lua-comparison/src/wasm.c +++ b/samples/wasm-lua-comparison/src/wasm.c @@ -20,10 +20,11 @@ wasm_exec_env_t exec_env = NULL; RuntimeInitArgs init_args; ThreadArgs thread_arg[THREAD_NUM]; pthread_t tid[THREAD_NUM]; -wasm_thread_t wasm_tid[THREAD_NUM]; -uint32 result[THREAD_NUM], sum; +wasm_thread_t wasm_tid; +uint32 result, sum; wasm_function_inst_t func; char error_buf[128] = { 0 }; +pthread_t wasm_thread; void init_wasm() { @@ -35,7 +36,6 @@ void init_wasm() init_args.mem_alloc_option.allocator.realloc_func = realloc; init_args.mem_alloc_option.allocator.free_func = free; init_args.max_thread_num = THREAD_NUM; - /* initialize runtime environment */ if (!wasm_runtime_full_init(&init_args)) { @@ -68,7 +68,6 @@ void init_wasm() printf("failed to create exec_env\n"); return -1; } - func = wasm_runtime_lookup_function(wasm_module_inst, "sum", NULL); if (!func) { printf("failed to lookup function sum"); @@ -105,6 +104,23 @@ void call_wasm_function() stop_t= clock(); printf("expect result: %d\n", wasm_argv[0]); total_t=(double)(stop_t-start_t)/ CLOCKS_PER_SEC; - printf("Total time = %f\n", total_t); + printf("WASM Total time = %f\n", total_t); + return NULL; +} -} \ No newline at end of file +void wasm_thread_function() +{ + clock_t start_t, stop_t; + double total_t; + wasm_runtime_spawn_thread(exec_env,&wasm_tid, call_wasm_function, NULL); + start_t= clock(); + wasm_runtime_join_thread(wasm_tid, NULL); + stop_t= clock(); + total_t=(double)(stop_t-start_t)/ CLOCKS_PER_SEC; + printf("WASM Thread Total time = %f\n", total_t); +} +// void thread_function(){ +// char *message = "WASM thread"; +// //printf("test /n"); +// pthread_create(&wasm_thread, NULL, call_wasm_function, (void*) message); +// } \ No newline at end of file