Giter VIP home page Giter VIP logo

dyu / ffi-overhead Goto Github PK

View Code? Open in Web Editor NEW
645.0 27.0 42.0 91 KB

comparing the c ffi (foreign function interface) overhead on various programming languages

License: Apache License 2.0

Shell 4.44% C 52.56% Go 1.72% Lua 1.66% Nim 1.43% Rust 1.94% Java 2.76% C++ 8.93% Dart 2.40% D 1.42% JavaScript 2.32% Haskell 1.58% Julia 1.19% C# 1.66% Makefile 0.96% OCaml 6.87% Elixir 1.41% Zig 3.18% V 1.07% Wren 0.52%
ffi c benchmark

ffi-overhead's Introduction

ffi-overhead

comparing the c ffi overhead on various programming languages

Requirements:

  • gcc
  • tup
  • zig
  • nim
  • v
  • java7
  • java8
  • go
  • rust
  • d (dmd and ldc2)
  • haskell (ghc)
  • ocaml
  • csharp (mono)
  • luajit
  • julia
  • node
  • dart
  • wren
  • elixir

My environment:

- Intel i7-3630QM laptop (4cores, HT) with 16g ram
- Ubuntu 14.04 x64
- gcc/g++ 5.4.1
- tup 0.7.4
- zig 0.2.0
- nim 0.14.3
- v 0.2.2 aebb551
- java 1.7.0_72 and 1.8.0_91
- go 1.8.0
- rust 1.17.0-nightly (c0b7112ba 2017-03-02)
- dmd 2.0.71.1
- ldc2 1.9.0
- ghc 7.10.3 (at /opt/ghc)
- ocaml 4.06.1
- mono 5.12.0.226
# dynamic languages 
- luajit 2.0.4
- julia 0.6.3
- node 6.9.0 (at /opt/node)
- dart 1.22.0 (at /usr/lib/dart)
- wren 0.1.0
- elixir 1.6.5 (Erlang/OTP 20)

Initialize

tup init

Compile

./compile-all.sh

Compile opts:

  • -O2 (gcc - applies to c/jni/nim)
  • -C opt-level=2 (rust)

Run

./run-all.sh 1000000

Measurement:

  • call the c function "plusone" x number of times and print out the elapsed time in millis.
int x = 0;
while (x < count) x = plusone(x);
  • 2 samples/runs

Results (500M calls)

./run-all.sh 500000000
The results are elapsed time in milliseconds
============================================

luajit:
891
905

julia:
894
889

c:
1182
1182

cpp:
1182
1183

zig:
1191
1190

nim:
1330
1330

v:
1779
1781

rust:
1193
1196

d:
1330
1330

d ldc2:
1191
1189

haskell:
1197
1198

ocamlopt:
1634
1634

ocamlc:
4299
4302

csharp mono:
2697
2690

java7:
4469
4472

java8:
4505
4472

node:
9163
9194

node scoped:
15425
15409

go:
37975
37879

dart:
31265
31282

dart scoped:
61906
69043

wren:
14519
14514

elixir:
23852
23752

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.