17th January 2007

 

Welcome to the Fastcode Project.

The Fastcode project provides highly optimized functions for the Delphi community. Functions are faster versions of Delphi runtime library functions, VCL functions or functions meant as extensions for these. The project is running on a volunteer basis.

Daily discussions are running in the BASM newsgroup at CodeGear

borland.public.delphi.language.basm

http://info.borland.com/newsgroups/ng_delphi.html

Functions can be written in assembler and use all the modern instruction sets, MMX, SSE, SSE2, SSE3, SSSE3, 3DNOW and 3DNOW+. We provide functions optimized for all modern processors and also versions that will run at all older processors. On the library page there are units available with all functions (currently more than 300) to download for free.

Donation

If you would like to make a donation to the Fastcode Project press the button below

Thanks for the donations I have received so far. They have enabled me to buy all I need for building a Dothan PC.
After that I will focus on building a Banias PC based on the socket 479 to 478 converter card by Asus (CT 479). Martin
Waldenburg is sponsoring a ASUS P4C800 Deluxe motherboard (and a P4 2800C). This MB is fine for a Banias PC. I have 442 Euro left over from the Dothan PC. Thay will enable me to get started on the Banias PC.
These two PC’s are the last I need for our current set of targets. In the near future we will add targets for dual core
Pentium D and AMD 64.
Donations of any size are welcome, even the smallest ones.

Best regards
Dennis

Thanks to:
Route Ware, who has donated a Pentium M processor (value 300 USD).
www.components4developers.com, leading, affordable and proven RAD Enterprise level n-tier, the way it should always have been done!
www.LinkLogger.comhas donated five licences for LinkLog.

Validation

All functions are validated thoroughly. Currently the benchmark and validation tools for the 61 challenges have more than 35000 lines of code. Functions follow the functionality of the corresponding RTL/VCL function exactly. If no corresponding function is present in the RTL/VCL, a text with a description of functionality is present at the challenge page.
Validation covers as much of the parameter space as is possible within resonable run times. Which parameter sub space is validated can change between releases of the benchmark and validation tool such that more of the space is covered over time for functions that have been in the tool longer than one release.

Benchmarking

Benchmarks are developed in such a way that correspond to real world usage as good as possible. We do not tweak benchmarks to give impressive results. An example of this is the Move benchmark, which benchmarks all sizes of moves with all kinds of alignment. If we only benchmarked topspeed on moves that would fit into the Level 1 cache and which were 16 byte aligned, our functions would show huge improvements over the RTL function, but this would not be realistic. Each spreadsheet with benchmark results has a page where you can see the speedup we achieved over the RTL functions in the different target categories.

License

Fastcode function libraries and benchmark & validation tools are released under the license Mozilla Public Licence 1.1 (MPL 1.1)

The licence terms are described at this page: http://www.mozilla.org/MPL/MPL-1.1.html

Rules

Rules
Conventions

Project archievements so far

Borland Delphi 2005 : Fastcode CompareText, Int64Div and FillChar are in RTL.
Borland Delphi 2006 : Fastcode CompareText, Int64Div, FillChar, ArcCos x 3, ArcSin x 3, Power x 3, PosEx, Pos, Move, UpperCase, LowerCase, CompareMem, CompareText, StrCopy and StrCompare are in RTL. Delphi 2006 IDE and compiled Win32 applications use FastMM4.

Challenges

The person who is number one on the winner's list at the 31. December 2007, 23:59 GMT, will be elected "Fastcoder of the Year 2007".

The last BV must be released before 12. December 2007, 23:59 GMT.
Deadline for functions 31. December 2007, 23:59 GMT.
Deadline for benchmark results is 7. January 2008, 23:59 GMT.
The winner will be elected before 10. January 2008, 23:59 GMT.