Commit Graph

78 Commits

Author SHA1 Message Date
florian
1641585655 * updated bcase.pp benchmark by Gareth Moreton, now used also as test
git-svn-id: trunk@40710 -
2018-12-30 22:21:03 +00:00
florian
7f5c2fa3aa * (modified) patch by Gareth Moreton: Speed improvement in case blocks, resolves #0034762
This patch improves the compiler where "case" statements are concerned, using jump tables more often and creating more efficient machine code in some situations:
  * If a case block only contains one branch (not including the else block), the initial range check is removed, since this becomes wasted effort.
  * If the else block is empty, the else label is set to the end label - though this doesn't decrease the code size, it takes a bit of strain off the peephole optimizer.
  * On -O2 and above, some node analysis is now done on the branch labels. Most of the time this just redirects it to the end
    label for empty blocks, but if the block contains a goto statement, it will redirect it to its destination instead,
    thus increasing performance by not having multiple jumps (this won't get picked up by the peephole optimiser if the label addresses are in a jump table).
  * Some checks now use what I call the 'true count' rather than the 'label count'. The true count includes each
    individual value in a range - for example, 0..2 counts as 3. This increases the chance that a jump table will be
    utilised in situations where it is more efficient than a linear list.
  * For jump tables, if the case block almost covers the entire range (32 entries or fewer from full coverage),
    the initial range check is removed and the gaps included in the jump table (pointing to the else label).

git-svn-id: trunk@40676 -
2018-12-27 18:31:55 +00:00
florian
47c9bca7f2 * number of cycles slightly increased for better measurements
git-svn-id: trunk@40161 -
2018-11-01 20:49:19 +00:00
florian
3706ab4e44 * fix formatting of the writing of the fraction
git-svn-id: trunk@35235 -
2017-01-04 22:57:43 +00:00
florian
29c28fd710 + define to be able to use epiktimer for time measurements
* write milliseconds correctly when not using epiktimer 

git-svn-id: trunk@30471 -
2015-04-06 20:13:19 +00:00
florian
6e11efa664 - remove unneeded variable
git-svn-id: trunk@30470 -
2015-04-06 20:10:31 +00:00
florian
ff3295d8fd * nostackframe is not allowed by newer FPCs for pascal functions/procedure (and was never recommended)
git-svn-id: trunk@24870 -
2013-06-11 20:04:33 +00:00
Vincent Snijders
9039afdead * fixed overflow when calculating frequencies
+ added lpi

git-svn-id: trunk@12749 -
2009-02-18 21:16:11 +00:00
Vincent Snijders
78d1b92d2f * updated to the current version from the shootout
git-svn-id: trunk@12748 -
2009-02-18 20:33:03 +00:00
Vincent Snijders
2add1ed6fc * cleanup on shootout maintainers request
git-svn-id: trunk@11864 -
2008-10-04 19:42:45 +00:00
Vincent Snijders
925cfd2fd7 * removed accidentally committed change
git-svn-id: trunk@11860 -
2008-10-03 09:02:25 +00:00
Vincent Snijders
f386573a94 + expected output for meteor benchmark
git-svn-id: trunk@11859 -
2008-10-03 08:46:14 +00:00
Vincent Snijders
1c98cda100 * fixed compilation on x86_64
git-svn-id: trunk@11858 -
2008-10-03 08:40:37 +00:00
Vincent Snijders
61f26d5a96 * removed compiler directives from source as per Isaac's request
git-svn-id: trunk@11857 -
2008-10-03 08:03:54 +00:00
Vincent Snijders
4c6d62f954 * fixed mandelbrot shootout benchmark for non i386 targets
git-svn-id: trunk@11850 -
2008-10-02 17:50:01 +00:00
Vincent Snijders
dad6f27de7 * another attempt to put the expected mandlebrot test output in svn
git-svn-id: trunk@11817 -
2008-09-22 11:04:00 +00:00
Vincent Snijders
70bbdb52ee * add real mandelbrot test output for n=200
git-svn-id: trunk@11815 -
2008-09-21 20:48:44 +00:00
Vincent Snijders
37164fa182 + mandelbrot test output for n=200
git-svn-id: trunk@11814 -
2008-09-21 19:47:35 +00:00
florian
0a6887a874 * fixed timer unit name
git-svn-id: trunk@11476 -
2008-07-28 16:18:42 +00:00
florian
076df335e8 + benchmark to test md5 improvement by internal rol
git-svn-id: trunk@11471 -
2008-07-28 12:47:24 +00:00
florian
5c1c5f2aad * write timing to stderr
git-svn-id: trunk@11091 -
2008-05-27 09:35:07 +00:00
Jonas Maebe
284ebc9d4a - deleted since it has been renamed to n_body
git-svn-id: trunk@9691 -
2008-01-09 00:14:30 +00:00
Vincent Snijders
25f0653c88 * renamed nbody to n_body
git-svn-id: trunk@9677 -
2008-01-08 10:31:00 +00:00
Vincent Snijders
e5ddfc8248 + current version of nbody benchmark
git-svn-id: trunk@9676 -
2008-01-08 08:14:04 +00:00
Vincent Snijders
46ca7ee46a o improved sumcol benchmark
* read line in string and convert to integer using val, like gcc does
* cache input text file, to avoid calling fpc_get_input all the time.

git-svn-id: trunk@9671 -
2008-01-07 13:51:34 +00:00
Vincent Snijders
2fb2712029 * current version of sumcol benchmark by Steve Fisher
git-svn-id: trunk@9670 -
2008-01-07 12:30:58 +00:00
Vincent Snijders
27b810b732 * cleanup
git-svn-id: trunk@9669 -
2008-01-07 12:20:48 +00:00
Vincent Snijders
a1f7a9086c * improved fannkuch benchmark
git-svn-id: trunk@9668 -
2008-01-07 11:09:07 +00:00
Vincent Snijders
4958973566 improved version of mandelbrot benchmark, uses now sse2 exclusively.
git-svn-id: trunk@9615 -
2008-01-02 15:18:25 +00:00
Marc Weustink
59f08ab878 + added shootout thread-ring benchmark
git-svn-id: trunk@9246 -
2007-11-13 21:53:53 +00:00
florian
c96bcd8340 + new fannkuch.pp from S. Fisher
git-svn-id: trunk@9150 -
2007-11-07 20:15:50 +00:00
peter
94a0e6de1b * fixed off-by-one by S. Fisher
git-svn-id: trunk@9144 -
2007-11-05 21:15:50 +00:00
peter
d97d098a1c * optimize loop to use pchar
git-svn-id: trunk@9143 -
2007-11-05 20:27:24 +00:00
peter
b741d5f2a3 * regex implementation from S. Fisher
git-svn-id: trunk@9142 -
2007-11-05 19:40:33 +00:00
florian
89d51b6dcf * updated to latest shootout version
git-svn-id: trunk@8964 -
2007-10-28 10:15:31 +00:00
Vincent Snijders
a9b0952c77 * added mode objfpc to prevent alignment problems
git-svn-id: trunk@8926 -
2007-10-25 14:34:01 +00:00
peter
5b43775060 * code from shootout
git-svn-id: trunk@8621 -
2007-09-23 14:55:58 +00:00
florian
aa76355045 + fasta benchmark added
git-svn-id: trunk@8615 -
2007-09-23 14:05:44 +00:00
Vincent Snijders
956d5e1c91 * improved recursive benchmark
git-svn-id: trunk@8592 -
2007-09-21 14:07:35 +00:00
daniel
d6e6e39d16 * Minor changes.
git-svn-id: trunk@7580 -
2007-06-05 07:53:55 +00:00
daniel
023be72367 + Pascal conversion of Stream benchmark.
git-svn-id: trunk@7579 -
2007-06-05 07:06:01 +00:00
peter
0605a67968 * new implementation
git-svn-id: trunk@7500 -
2007-05-28 16:10:15 +00:00
peter
b9a384ba08 * multiple fpc version support for shootout
git-svn-id: trunk@7494 -
2007-05-28 11:59:10 +00:00
daniel
86ae9d5475 * Make it work under Linux.
git-svn-id: trunk@7482 -
2007-05-26 14:56:09 +00:00
micha
4b73505019 * make bansi1 bench multi threaded, in bansi1mt
git-svn-id: trunk@7459 -
2007-05-24 20:16:49 +00:00
micha
b51f0d5e20 * make blists1 bench more detailed
git-svn-id: trunk@7458 -
2007-05-24 20:16:14 +00:00
daniel
4edf4de955 + Meteor benchmark
git-svn-id: trunk@7197 -
2007-04-29 19:19:16 +00:00
Vincent Snijders
4bb6ca2e51 * faster and less memory consuming version as submitted to the shootout
git-svn-id: trunk@5702 -
2006-12-24 18:20:28 +00:00
florian
c81f69a82a * renamed
git-svn-id: trunk@5685 -
2006-12-22 19:05:24 +00:00
florian
d105f287c7 * TFPList benchmark old vs. generic
git-svn-id: trunk@5684 -
2006-12-22 19:04:15 +00:00