Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/grigory-rechistov/interpreters-comparison
Sample programs for comparison of different VM interpretation techniques
https://github.com/grigory-rechistov/interpreters-comparison
Last synced: 2 months ago
JSON representation
Sample programs for comparison of different VM interpretation techniques
- Host: GitHub
- URL: https://github.com/grigory-rechistov/interpreters-comparison
- Owner: grigory-rechistov
- License: bsd-3-clause
- Created: 2015-07-07T20:22:30.000Z (over 9 years ago)
- Default Branch: master
- Last Pushed: 2024-11-07T08:51:44.000Z (3 months ago)
- Last Synced: 2024-11-07T09:40:40.410Z (3 months ago)
- Language: C
- Size: 310 KB
- Stars: 29
- Watchers: 6
- Forks: 11
- Open Issues: 8
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- AwesomeInterpreter - interpreters-comparison
README
# Compare Performance and Complexity of Software Interpreters of a Virtual Machine
Sample programs for comparison of different VM interpretation techniques.
See the Makefile for the full list of targets.* `switched` - switched interpreter
* `threaded` - threaded interpreter
* `predecoded` - switched interpreter with preliminary decoding phase
* `subroutined` - subroutined interpreter
* `threaded-cached` - threaded interpreter with pre-decoding.
* `tailrecursive` - subroutined interpreter with tail-call optimization
* `translated` - binary translator to Intel 64 machine code
* `native` - a static implementation of the test program in C## Build
Just type `make`. For Visual Studio builds, open corresponding project or solution files.
Use `make sanity` to perform a quick check of all variants.
## Measure performance
Use `./measure.sh` to measure run time of individual binaries or to perform a comparison of all techniques (alternatively, run `make all measure`).
The graph plotting part of the script uses Gnuplot and AWK.
## Supported Environments
- Tested to compile and run with GCC 4.8.1, GCC 5.1.0 and ICC 15.0.3 on Ubuntu Linux 12.04.5. Limited testing was also done on Windows 8.1 Cygwin64 environment, GCC 4.8.
- Limited support for Visual Studio builds is provided. Certain types of interpreters will not build because of the CL compiler limitations or source code dependencies on GCC language extensions.## References
An article discussing structure, performance variations, and comparison of interpreters: http://habrahabr.ru/company/intel/blog/261665/ (in Russian).