FastCode: Difference between revisions

Content deleted Content added
KolbertBot (talk | contribs)
m Bot: HTTP→HTTPS (v475)
updated information, the old one was outdated
Line 1:
'''FastCode''' is an [[open source programming]] project aimed at providing enhanced [[runtime library]] routines for [[Embarcadero Delphi]] and [[C++Builder|C++ Builder]]. Since it was started in 2003 by [[Dennis Kjaer Christensen]], it has contributed highly optimised functionality to the 32-bit Delphi [[runtime library]] (RTL). FastCode is unique among contributions to commercial compiler runtime libraries for its community-driven and open source nature.
 
==Structure==
The project is organized as a competition divided into challenges. Each challenge takes one function and optimizes it against a number of targets. The project provides tools for [[benchmarking]] and validating each function contribution. One point is given per contribution (maximally one function per target is given points) and ten points are awarded for a target winner. A list with all contributors and their scores is maintained, and at the end of each year, until 2008, a winner iswas celebrated. [[Borland]], [[Codegear]] and [[Embarcadero Technologies|Embarcadero]], the owners of [[Delphi]] and [[C++ Builder]], have historically sponsored prizes.
 
The majority of participants in the competition are assembler developers who often utilize processor-specific 32-bit code and extra instruction sets, such as [[MMX (instruction set)|MMX]], [[Streaming SIMD Extensions|SSE]], [[SSE2]], [[SSE3]], [[SSSE3]] and [[SSE4]].<ref>{{cite web|url=http://www.gerixsoft.com/blog/delphi/fastcode|title=How to Optimize Delphi Application Performance to the Max using FastCode Library|publisher=|accessdate=3 September 2015}}</ref>
The project is organized as a competition divided into challenges. Each challenge takes one function and optimizes it against a number of targets. The project provides tools for [[benchmarking]] and validating each function contribution. One point is given per contribution (maximally one function per target is given points) and ten points are awarded for a target winner. A list with all contributors and their scores is maintained, and at the end of each year a winner is celebrated. [[Borland]], [[Codegear]] and [[Embarcadero Technologies|Embarcadero]], the owners of [[Delphi]] and [[C++ Builder]], have historically sponsored prizes.
 
The majority of participants in the competition are assembler developers who often utilize processor-specific code and extra instruction sets, such as [[MMX (instruction set)|MMX]], [[Streaming SIMD Extensions|SSE]], [[SSE2]], [[SSE3]], [[SSSE3]] and [[SSE4]].<ref>{{cite web|url=http://www.gerixsoft.com/blog/delphi/fastcode|title=How to Optimize Delphi Application Performance to the Max using FastCode Library|publisher=|accessdate=3 September 2015}}</ref>
 
The project enjoys the support of Embarcadero who recognizes the contributions of the FastCode team and incorporates their code into the codebase for Delphi.<ref>{{cite web|url=http://blogs.embarcadero.com/nickhodges/2006/11/27/29891|title=Nick Hodges|publisher=|accessdate=3 September 2015}}</ref> The default [[memory management|memory manager]] for [[Embarcadero Delphi]], FastMM4, is the winner of the FastCode Memory Manager challenge.<ref name="embarcadero.com">{{cite web|url=http://blogs.embarcadero.com/abauer/2005/09/28/21433|title=The Oracle at Delphi|publisher=|accessdate=3 September 2015}}</ref>
 
The project was first hosted on Robert Lee's [[OptimalCode]] site, and its source code's current home page is [http://fastcode.sourceforge.net/], last updated in 2008. The source code contains both the enhanced routines and the testing suites to benchmark the routines. In 2017, the benchmark routines for Move, FillChar and the memory manager have been ported for 64-bit, available at [https://github.com/maximmasiutin/FastCodeBenchmark].
 
== Testing ==
 
The FastCode project puts a lot of effort into testing and focus is on providing very high quality software. Testing is split into two categories - testing for correctness and testing for speed.
 
Line 23 ⟶ 21:
 
== Targets ==
Testing done on the entire targetset. A new targetset is decided each year from a poll where the FastCode community can vote. A targetset will typically consist of six CPUs, where four are from Intel and two are from AMD. This ratio has been selected to mimic the marketshares. In addition to these six CPU targets there are ten targets defined as a blend of the six CPUs. These ten targets are called computed targets and can be speed only or a combination of speed and size. The maximum allowed instruction set is different for each target. A target could be "IA32 size penalty" or "SSE2".
The penalty for size is decided for each challenge by a poll.
 
== List of challenges ==
 
The FastCode project has run the following challenges [http://fastcode.sourceforge.net/]:
{{Div col|cols=3}}