[Linuxtrent] Re: Tutorial (2011-2013) che mette a confronto alcuni linguaggi di programmazione sulla manipolazione di stringhe

  • From: Daniele Nicolodi <daniele@xxxxxxxxxx>
  • To: linuxtrent@xxxxxxxxxxxxx
  • Date: Tue, 18 Mar 2014 14:57:54 +0100

On 18/03/2014 13:13, Guido Brugnara wrote:
> Mi sono imbattuto in questo articolo:
> 
> http://raid6.com.au/~onlyjob/posts/arena/
> 
> che espone i risultati del confronto di codice scritto in alcuni 
> linguaggi valutando velocità e occupazione di memoria.

Uhm... Il metodo per la valutazione delle prestazioni dei vari linguaggi
è descritto in questo modo:

  Test code grows text string by adding another string in cycle until
  it grows up to 4 mb. Each iteration substitutes some text. Every time
  string becomes 256 KiB larger program prints number of seconds passed
  since beginning of test. App's output is being piped to script
  capturing memory usage (using memstat) for every line printed.

e già mi pare un caso molto limitato per valutare le prestazioni di un
linguaggio di programmazione.  Inoltre le implementazioni nei vari
linguaggi mi sembrano poco idiomatiche: il codice Python è scritto in un
modo in cui nessun programmatore con conoscenza del linguaggio lo
scriverebbe. Questa versione (che non è la più efficiente possibile) che
ho messo assieme velocemente è ~500 più veloce di quella usata per il
benchmark (e dunque più veloce della versione in C, solo per dire quanto
male quel C sia scritto):

  import re
  import time

  string = 'abcdefgh' + 'efghefgh'

  starttime = time.time();
  print "exec.tm.sec\tstr.length"

  for i in xrange(1, 17):
      s = ''.join(string for x in xrange(i * 256 * 1024 / len(string)))
      s = re.sub('efgh', '____', s)
      print time.time() - starttime, "sec\t\t", (len(s) / 1024), "kb"

Non mi sembra un granché come confronto. Confrontare linguaggi diversi è
interessante soprattutto per confrontarne l'espressività e per capire
come linguaggi con diverse peculiarità portino a risolvere i problemi in
modi diversi. Tradurre pari pari del codice originalmente pensato per un
linguaggio in un altro porta solo a codice scritto male...

Ciao,
Daniele
-- 
Per iscriversi  (o disiscriversi), basta spedire un  messaggio con OGGETTO
"subscribe" (o "unsubscribe") a mailto:linuxtrent-request@xxxxxxxxxxxxx


Other related posts: