Parallel Rogue-like benchmark

Joseph Rushton Wakeling joseph.wakeling at webdrake.net
Sat Aug 24 08:11:23 PDT 2013


On 24/08/13 06:58, H. S. Teoh wrote:
> In none of the above examples did I try to deliberately game with the
> metric. But the metric is still pretty inaccurate, and requires
> subjective judgment calls.

It's a heuristic, rather than a metric, I'd say.  But as a heuristic it may be 
useful to compare things like

     (i) what's the minimal number of lines needed (not artificially compressing
         them!) to write the algorithm idiomatically?

    (ii) how many more (or less) lines do you need to optimize the code for
         performance?

   (iii) how many more lines do you need to parallelize the code effectively and
         safely?

By the way, for your example:

> 	auto formatYear(int year, int monthsPerRow)
> 	{
> 	    enum colSpacing = 1;
> 	    return
> 		datesInYear(year)
> 		.byMonth()
> 		.chunks(monthsPerRow)
> 		.map!(r =>
> 			r.formatMonths()
> 			 .array()
> 			 .pasteBlocks(colSpacing)
> 			 .join("\n"))
> 		.join("\n\n");
> 	}

Although obviously there are only 3 _logical_ lines there (the function 
declaration, the enum, and the return statement), here I'd be inclined to say 
the number of _significant_ lines is 12 (I'm ignoring the braces).  The fact 
that you needed to spread the expression out across multiple lines in order to 
be readable does carry useful information about the language, IMO.

That doesn't necessarily say the language is _bad_.  It's difficult to see how a 
language could reduce the space needed for that expression without also reducing 
comprehensibility.


More information about the Digitalmars-d mailing list