Skip to content

A basic comparitive analysis of C, C++, Rust, and Zig.

License

Notifications You must be signed in to change notification settings

CoalNova/BasicCompare

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

19 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

BasicCompare

pretty command line text A basic comparitive analysis of C, C++, Rust, Zig, Python, and Java.

Overview

The goal of this project was to test operational time performance for each language using as like operations as possible. Though per-lang optimizations could be performed, the systems-level languages allow for inline assembly. That means this would get real nasty, real quick. The implementation is meant to be a naive, or at least a beginner's basic approach to the problem.

The operations are:

  • using a struct to contain a billable user account
  • propogated by a language provided random number generator
  • over a provided (100 default) number of iterations
  • propagate a resizeable heap-based account collection of provided operation size (100 default)
  • iterate over the list and perform a billing based on account balance (actual values don't matter)
  • perform the iteration loop operation number of times
  • clear list/free memory

Although variations obviously change between languages, those operations are performed in much the same manner across. The languages are compiled using optimizations where available. C/C++ uses -O2, Rust uses --release, and Zig uses ReleaseFast. Programs will print to command line the total time of execution. As well as the maximum, minimum, and average per-iteration times.


Useage

The provided Makefile should build on any machine that has Make/Clang, Rust/Cargo, Zig, and Java. Python .py file to be run via CLI $ python ./python/main.py. Each program allows for up to two numeric arguments, with the first assigning operations, and the second iterations.


Timings

Raw output on an admittedly cheap laptop running 100 operations over 1000 iterations are as follows:

Language Execution Time (s) Max (ns) Min (ns) Avg (ns) C Ratio
C 0.335615 455000 296000 335181 1.00
C++ 0.348636 477918 306957 348245 0.96
Rust 0.229681174 368683 201749 229564 1.46
Zig 0.10153 541197 75332 95047 3.30
Python 14.77727734 33754451 12984472 14775610 0.02
Java 0.263353044 7772037 130966 240370 1.27

*note: Python timed via interpreter, your times may vary. Please speak to your doctor or a licensed medical professional before attempting Java. Not to be confused with financial advice. Offer void in Utah.

About

A basic comparitive analysis of C, C++, Rust, and Zig.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published