Comments (7)
Have a look into "perf" subdirectory.
from libmill.
thanks, I had looked into that folder, but didn't find that particular benchmark. Its not that I believe that particular benchmark has any inherent value, I only wanted to use it because there are implementations of it already floating online for Go, Rust, Racket, Lisp, Haskell, etc.
I just implemented one. The results are both exciting and disappointing at the same time. For values of up to 10,000, libmill seems performs well, in fact in some runs it is faster than go!
Unfortunately, with bigger values it chokes really bad. For 100000 go takes 1.7 seconds on average on my laptop, and I left the libmill version running for minutes without getting an output (so there is probably some sort of deadlock going on).
Will submit a pull-request adding the whispers benchmark to libmill.
from libmill.
I've fixed couple of bugs and now I get this on my laptop:
sustrik@sustrik-glaptop:~/libmill$ ./perf/whispers 100000
100001
took 0.469000 seconds
Please, confirm.
from libmill.
unfortunately, it still chokes on 100,000.
I let it run until completion, it took 164 seconds.
What operating system are you testing on? I was trying to run on an osx laptop. I just tried it on linux, and there it does complete within a second, so perhaps this is some performance bottleneck caused by clang?
from libmill.
Unfortunately, I don't own an OSX box. For diagnostic purposes, can you check with gcc on OSX?
from libmill.
unfortunately installing gcc in osx is a PITA.
however, I did the next best thing, I installed clang on my linux box. There I can confirm that libmill works fine with clang 3.4, so this is probably not a compiler thing.
Perhaps this has something to do with the setjmp and longjmp of glibc vs whatever libc osx uses? Or even worse, this could be related to the kernel?
I haven't looked under the hood to see how libmill actually works (may do that next weekend when I get some more spare time), so I can't offer any additional insight.
from libmill.
My guess would be malloc() rather than set/longjmp().
Easy way to find out: Measure the setup phase (go commands) in whispers separately from message passing phase (chs/chr). If setup is slow, malloc is suspect. If sending is slow, longjmp is.
from libmill.
Related Issues (20)
- udpsend error in mac os HOT 10
- is it right to pass channel as channel message ? HOT 1
- library not found for -lmill HOT 1
- too slow HOT 1
- Conan package HOT 1
- socket leak on tcpconnect() timeout
- Wait for any event in event loop HOT 1
- please implement fdwait(FDW_ERR)
- Description of primitives without synchronization HOT 3
- tests/ip hangs HOT 7
- [install] make FAILS HOT 2
- implicit declaration of function 'asm' is invalid in C99
- FTBFS: dns/dns.h:1009:24: error: lvalue required as unary '&' operand HOT 2
- segment fault on osx HOT 1
- More compiler issues...
- Suggetion rename API for chdone/chclose
- many warnings compile with clang
- Is this maintained anymore? HOT 1
- libmill.org parked
- Deprecate, archive, and suggest libdill? HOT 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from libmill.