FastCode: Difference between revisions

Content deleted Content added
AnomieBOT (talk | contribs)
m Dating maintenance tags: {{Cleanup-bare URLs}}
Filled in 10 bare reference(s) with reFill ()
Line 1:
{{cleanup-bare URLs|date=September 2015}}
'''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 Delphi [[runtime library]] (RTL). FastCode is unique among contributions to commercial compiler runtime libraries for its community-driven and open source nature.
 
Line 6 ⟶ 5:
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 is [http://fastcode.sourceforge.net/].
Line 101 ⟶ 100:
 
*Delphi 2005: CompareText, Int64Div and FillChar
*Delphi 2006:<ref>Long, Brian & Swart, Bob, "Borland Developer Studio 2006 Reviewed", The Delphi Magazine, Issue 124, December 2005</ref> CompareText, Int64Div and FillChar, FastMM4 memory manager <ref>http://blogs. name="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>{{cite web|url=http://www.stevetrefethen.com/blog/CommunitycontributionsimproveDelphi2007RTLperformance.aspx|title=Community contributions improve Delphi 2007 RTL performance|publisher=|accessdate=3 September 2015}}</ref>
 
The ''Mastering Delphi'' books by Marco Cantu contains a chapter about FastCode listing the contributions to the Delphi RTL.<ref>{{cite web|url=http://www.marcocantu.com/md2005/UpdateDelphi2006_ch05.html|title=Mastering Delphi Update for Delphi 2006|publisher=|accessdate=3 September 2015}}</ref>
 
== The FastCode Library ==
Line 115 ⟶ 114:
 
== FastMM4 Memory Manager ==
The FastMM memory manager used by Delphi and C++ Builder since 2006 is also the winner of a FastCode competition.<ref>Gabrijelcic, Primoz, "To Manage Memory", The Delphi Magazine, Issue 126, February 2006</ref> It replaced the standard memory manager of Delphi and is not only less prone to memory fragmentation, it also provides improved debugging possibilities like being able to report [[memory leak]]s when the application is being closed,<ref>{{cite web|url=http://blog.marcocantu.com/blog/fastmm4.html|title=FastMM4|publisher=|accessdate=3 September 2015}}</ref> detecting use after memory release or double releases.
 
FastMM4 is also used as memory manager for applications developed in Lazarus.<ref>{{cite web|url=http://books.google.dk/books?id=WCrzCSuNfHoC&pg=PA64&lpg=PA64&dq=fastmm+delphi&source=bl&ots=nmf3lvxc0G&sig=mBWWTH_XN7QJIRmC2ChTlUuw3I8&hl=da&ei=yH85TfGmFcKRswaKqrDzBg&sa=X&oi=book_result&ct=result&resnum=7&ved=0CEgQ6AEwBji2Ag#v=onepage&q&f=false|title=Lazarus Free Pascal|publisher=|accessdate=3 September 2015}}</ref>
 
FastMM4 is often listed as a "must have" tool for Delphi developers.<ref>{{cite web|url=http://delphi.wikia.com/wiki/Good_Tools_for_Delphi_Developers|title=Good Tools for Delphi Developers|work=Delphi Programming|accessdate=3 September 2015}}</ref>
 
Nexus DB comes with FastMM4 integration for leakchecking.<ref>{{cite web|url=http://www.nexusdb.com/support/index.php?q=node/10200|title=NexusDB|publisher=|accessdate=3 September 2015}}</ref>
 
FastMM usage is documented in "The New Memory Manager In BDS 2006".<ref>{{cite web|url=http://edn.embarcadero.com/article/33416|title=The New Memory Manager In BDS 2006 - by Pierre le Riche|publisher=|accessdate=3 September 2015}}</ref>
 
== Applications using FastCode ==