Jump to content

FastCode: Difference between revisions

From Wikipedia, the free encyclopedia
Content deleted Content added
We probably don't need this list of contributors, maybe just more notable ones if any?
Reorganised introduction, pointed out uniqueness and value to Delphi / C++ Builder. Misc changes in language and structure.
Line 5: Line 5:
{{Multiple issues|wikify = January 2011|orphan = January 2011|unreferenced=January 2011|notable=January 2011}}
{{Multiple issues|wikify = January 2011|orphan = January 2011|unreferenced=January 2011|notable=January 2011}}


'''FastCode''' is [[Computer programming|programming]] project aimed at providing enhanced [[runtime library]] routines for [[Embarcadero Delphi]]. It was started in 2003 by [[Dennis Kjaer Christensen]] and at first it was hosted on [[Robert Lee]]'s [[OptimalCode]] site.
'''FastCode''' is an [[open source]] [[Computer programming|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 Embarcadero [[Runtime library|RTL]]. FastCode is unique among contributions to commercial compiler runtime libraries for its community-driven and open source nature.


==Structure==
The current project home is at http://fastcode.sourceforge.net/


The project is organized as a competition divided into challenges. Each challenge takes one function and optimizes it against a number of target (10-16). The project provides tools for [[benchmarking]] and validating each function contribution. 1 point is given for a contribution (maximally one function per target is given points) and 10 points are given for a target winner. A list with all contributors and their scores are maintained and at the end of each year a winner is celebrated. [[Borland]]/[[Codegear]] etc... have sponsored prizes.
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 tens 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]], 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 like [[SSE]] and [[SSE2]]<ref>http://www.gerixsoft.com/blog/delphi/fastcode</ref>
The majority of participants in the competition are assembler developers who often utilize processor-specific code and extra instruction sets, such as [[SSE]] and [[SSE2]]<ref>http://www.gerixsoft.com/blog/delphi/fastcode</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>http://blogs.embarcadero.com/nickhodges/2006/11/27/29891</ref>. The default [[memory manager]] for [[Embarcadero Delphi]] is the winner of the FastCode Memory Manager challenge<ref>http://blogs.embarcadero.com/abauer/2005/09/28/21433</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>http://blogs.embarcadero.com/nickhodges/2006/11/27/29891</ref>. The default [[memory manager]] for [[Embarcadero Delphi]], FastMM4, is the winner of the FastCode Memory Manager challenge<ref>http://blogs.embarcadero.com/abauer/2005/09/28/21433</ref>.

The project was first hosted on [[Robert Lee]]'s [[OptimalCode]] site, and its source code's current home is [http://fastcode.sourceforge.net/].


== List of Challenges ==
== List of Challenges ==


The FastCode project has run these challenges:
The FastCode project has run the following challenges:
*AES
*AES
*AnsiStringReplace
*AnsiStringReplace
Line 29: Line 31:
*CharPosRev
*CharPosRev
*CompareMem
*CompareMem
*CompareStr
*ComnpareStr
*CompareText
*CompareText
*Polar Complex Number Addition
*Polar Complex Number Addition
*Polar Complex Number Subtraction
*Polar Complex Number Subtraction

The FastMM memory manager used by Delphi and C++ Builder since 2007 is also the winner of a FastCode competition.


== Contributions to Delphi RTL ==
== Contributions to Delphi RTL ==
Line 38: Line 42:


*Delphi 2005: CompareText, Int64Div and FillChar
*Delphi 2005: CompareText, Int64Div and FillChar
*Delphi 2006: CompareText, Int64Div and FillChar, New Memory Manager (FastMM4) <ref>http://blogs.embarcadero.com/abauer/2005/09/28/21433</ref>
*Delphi 2006: CompareText, Int64Div and FillChar, FastMM4 memory manager <ref>http://blogs.embarcadero.com/abauer/2005/09/28/21433</ref>
*Delphi 2007—Delphi XE: ArcCos, ArcSin, Power, PosEx, Move, Memory Manager, FillChar, Pos, __lldiv, LowerCase, UpperCase, CompareStr, CompareMem, CompareText, StrLen, StrCopy, StrComp. <ref>http://www.stevetrefethen.com/blog/CommunitycontributionsimproveDelphi2007RTLperformance.aspx</ref>
*Delphi 2007—Delphi XE: ArcCos, ArcSin, Power, PosEx, Move, Memory Manager, FillChar, Pos, __lldiv, LowerCase, UpperCase, CompareStr, CompareMem, CompareText, StrLen, StrCopy, StrComp. <ref>http://www.stevetrefethen.com/blog/CommunitycontributionsimproveDelphi2007RTLperformance.aspx</ref>


== The FastCode Library ==
== The FastCode Library ==


All the challenge winners are included in the FastCode library (http://fastcode.sourceforge.net/challenge_content/rtl_replcmnt_pkg.html). This library is [[open source]] released under the [[MPL license]].
All the challenge winners are included in the FastCode library (http://fastcode.sourceforge.net/challenge_content/rtl_replcmnt_pkg.html). This library is [[open source]], released under the [[MPL license]].


== References ==
== References ==
Line 49: Line 53:
{{Reflist}}
{{Reflist}}


[[Category:Computer_libraries]]
[[Category:Programming contests]]
[[Category:Programming contests]]

Revision as of 06:57, 20 January 2011

FastCode is an open source programming project aimed at providing enhanced runtime library routines for Embarcadero Delphi and C++ Builder. Since it was started in 2003 by Dennis Kjaer Christensen, it has contributed highly optimised functionality to the Embarcadero 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 tens 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, 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 SSE and SSE2[1].

The project enjoys the support of Embarcadero who recognizes the contributions of the FastCode team and incorporates their code into the codebase for Delphi[2]. The default memory manager for Embarcadero Delphi, FastMM4, is the winner of the FastCode Memory Manager challenge[3].

The project was first hosted on Robert Lee's OptimalCode site, and its source code's current home is [1].

List of Challenges

The FastCode project has run the following challenges:

  • AES
  • AnsiStringReplace
  • ArcCos
  • ArcSin
  • Ceil32
  • Ceil64
  • CharPos
  • CharPosIEx
  • CharPosEy
  • CharPosRev
  • CompareMem
  • CompareStr
  • CompareText
  • Polar Complex Number Addition
  • Polar Complex Number Subtraction

The FastMM memory manager used by Delphi and C++ Builder since 2007 is also the winner of a FastCode competition.

Contributions to Delphi RTL

FastCode functions included in the Delphi RTL:

  • Delphi 2005: CompareText, Int64Div and FillChar
  • Delphi 2006: CompareText, Int64Div and FillChar, FastMM4 memory manager [4]
  • Delphi 2007—Delphi XE: ArcCos, ArcSin, Power, PosEx, Move, Memory Manager, FillChar, Pos, __lldiv, LowerCase, UpperCase, CompareStr, CompareMem, CompareText, StrLen, StrCopy, StrComp. [5]

The FastCode Library

All the challenge winners are included in the FastCode library (http://fastcode.sourceforge.net/challenge_content/rtl_replcmnt_pkg.html). This library is open source, released under the MPL license.

References