Faster than C (2024)

Judging the performance of programming languages,usually C is called the leader,though Fortran is often faster.New programming languages commonly use C as their referenceand they are really proud to be only so much slower than C.Few language designer try to beat C.

What does it take for a language to be faster than C?

Better Aliasing Information

Aliasing describes the fact that two references might point to the same memory location.For example, consider the canonical memory copy (not memcpy from stdlib.h!):

void* memcopy(void* dst, const void* src, size_t count) { char *d = (char*) dst; // pointer arithmetic requires non-void const char *s = (char*) src; while (count--) *d++ = *s++; return dst;}

Depending on the target architecture,a compiler might perform a lot of optimizations with this code.For example, on a modern x86 with the SSE instruction MOVDQU,it could copy 16 Byte blocks instead of 4 Byte (sizeof(void*)).Unfortunately, no.Due to aliasing, dst could for example be src+1.In this case, the result must be the first word *src repeated count times at dst.The compiler is not allowed to use MOVDQU due to the semantics of C.

In C99 the restrict keyword was added,which we could use here to encode that src and dst are different from all other references.This mechanism helps in some cases, but not in our example.

Fortran semantics say that function arguments never aliasand there is an array type,where in C arrays are pointers.This is why Fortran is often faster than C.This is why numerical libraries are still written in Fortran.However, it comes at the cost of pointer arithmetic.

A language which wants to be faster than Cshould provide semanticswhere aliasing can be better analyzed by the compiler.

Push Computation to Compile-Time

Doing things at compile time reduces the run time.Of course, C compilers do this for trivial cases like 1+2,where the addition is already handled at compile time.

However, languages with nice meta-programming supportenable the programmer to do similar application specific optimizations.A simple example, we could optimize fib(20) to 6765,without the compiler knowing about Fibonacci numbers.

For a real example,the Eigen C++ library for linear algebrauses C++ templates to avoid copiesand be lazy about computations.Of course, Lisp is the grandfather of this technique with its macro system.For example, there is a nice anecdoteabout a student using Scheme for an assignment.Basically, the programmer can modify the abstract syntax tree during compilation.The trade-off with such meta programming features is complexity.Programmer underestimate the difficulty to write correct macroslike they underestimate the difficulty to write correct concurrent programs.

A language designer should think about meta programming.Something Turing-complete like C++ templates,seems to be beneficial for performance.

Runtime Optimization

At runtime there is dynamic informationwhich is not available to a static compiler.Any specific example could be duplicated by a C program,but usually it is not feasible.The trick of profile-guided optimizations solves only a small part of the problem.

What becomes especially easy at runtime is whole-world optimization.While this is possible statically,the C semantics (compilation units) and the mandatory preprocessormake it difficult for the compiler.Even Python can beat Cby inlining across file borders.

Of course, there are downsides to using a JITand especially in systems- and embedded programming it is not appropriate.So there might be exampleswhere Java, C# or others beat C,but they do not threaten C's niche.

Instruction Level Parallelism

Modern CPUs provide SIMD instructions for vectors,like Intel's AVX extension.While this can be use in C with intrinsics,it could be made much easier in another language.Exloiting it automatically by the compiler has not been that successful so far,so language support should be beneficial.

Conclusion

Aliasing information is the only onewhere I am certain about speed improvements,because it is impossible to reach Fortran-speed in C.The other ideas are more about making it easier to write faster programs.

Discussion on Hacker News andReddit Programming.

Language designers, also read about myfive mistakes in programming language design.

An older version of this has been published in Hacker Monthly (issue 26).

Also interesting:We Need More Compute Power,The Spirit of C,and A Better C.

Faster than C (2024)
Top Articles
Kucoin Vs Binance 2024: Which Is The Better Exchange?
Do Trust Funds Gain Interest?
Star Wars Mongol Heleer
55Th And Kedzie Elite Staffing
Odawa Hypixel
2024 Fantasy Baseball: Week 10 trade values chart and rest-of-season rankings for H2H and Rotisserie leagues
Caroline Cps.powerschool.com
<i>1883</i>'s Isabel May Opens Up About the <i>Yellowstone</i> Prequel
Unlocking the Enigmatic Tonicamille: A Journey from Small Town to Social Media Stardom
Merlot Aero Crew Portal
Craigslist Dog Sitter
THE 10 BEST River Retreats for 2024/2025
Tribune Seymour
270 West Michigan residents receive expert driver’s license restoration advice at last major Road to Restoration Clinic of the year
Citi Card Thomas Rhett Presale
The Wicked Lady | Rotten Tomatoes
Elle Daily Horoscope Virgo
Aces Fmc Charting
No Strings Attached 123Movies
Wgu Admissions Login
What Time Chase Close Saturday
Foodland Weekly Ad Waxahachie Tx
Yakimacraigslist
Craigslistjaxfl
97226 Zip Code
Maxpreps Field Hockey
Busted News Bowie County
St Clair County Mi Mugshots
Sunset Time November 5 2022
C&T Wok Menu - Morrisville, NC Restaurant
Low Tide In Twilight Ch 52
3569 Vineyard Ave NE, Grand Rapids, MI 49525 - MLS 24048144 - Coldwell Banker
Darrell Waltrip Off Road Center
Doctors of Optometry - Westchester Mall | Trusted Eye Doctors in White Plains, NY
Cor Triatriatum: Background, Pathophysiology, Epidemiology
Mchoul Funeral Home Of Fishkill Inc. Services
Ewg Eucerin
Log in or sign up to view
Kleinerer: in Sinntal | markt.de
91 Octane Gas Prices Near Me
Pfcu Chestnut Street
JD Power's top airlines in 2024, ranked - The Points Guy
The Complete Guide To The Infamous "imskirby Incident"
My.lifeway.come/Redeem
Www.craigslist.com Waco
Gym Assistant Manager Salary
Frigidaire Fdsh450Laf Installation Manual
Swsnj Warehousing Inc
Big Brother 23: Wiki, Vote, Cast, Release Date, Contestants, Winner, Elimination
Mail2World Sign Up
Renfield Showtimes Near Regal The Loop & Rpx
Craigslist Charlestown Indiana
Latest Posts
Article information

Author: Kimberely Baumbach CPA

Last Updated:

Views: 6411

Rating: 4 / 5 (61 voted)

Reviews: 92% of readers found this page helpful

Author information

Name: Kimberely Baumbach CPA

Birthday: 1996-01-14

Address: 8381 Boyce Course, Imeldachester, ND 74681

Phone: +3571286597580

Job: Product Banking Analyst

Hobby: Cosplaying, Inline skating, Amateur radio, Baton twirling, Mountaineering, Flying, Archery

Introduction: My name is Kimberely Baumbach CPA, I am a gorgeous, bright, charming, encouraging, zealous, lively, good person who loves writing and wants to share my knowledge and understanding with you.