ACHTUNG. Das ist ein Archiv des alten forum.ruby-portal.de. Die aktuelle Mailingliste gibt es auf lists.ruby-lang.org/pipermail/ruby-de.

NOTICE. This is a ready-only copy of the old forum.ruby-portal.de. You can find the current mailing list at lists.ruby-lang.org/pipermail/ruby-de.

Die Programmiersprache Ruby

Blog|

Forum|

Wiki  


Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]

Ein neues Thema erstellen Auf das Thema antworten  [ 12 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: pthread langsamer?
BeitragVerfasst: 03 Jun 2008, 12:31 
Offline
Böser Admin 2
Benutzeravatar

Registriert: 17 Mär 2004, 17:03
Beiträge: 2544
Wohnort: Berlin
ich benutze seit langem auf Mac OS immer mein selbstcompiliertes Ruby, und bin dabei dem einschlägigen tutorial gefolgt. heute habe ich herausgefunden, dass das vorinstallierte Ruby ca. 3 mal (+200%!) schneller ist!

es scheint vor allem an --enable-pthread zu liegen. lasse ich das beim compilieren weg, erhalte ich auch mit meinem selbstcompilierten Ruby eine gute performance. angeblich läuft Rails mit pthreads schneller, aber ich merke davon nichts - im gegenteil.

die frage ist: welche parameter muss ich angeben, damit Ruby möglichst schnell läuft?

einen habe ich schon gefunden: mit CFLAGS=-O3 geht es noch schneller :)

_________________
Ruby-Mine | (almost) murphy.de | rubychan.de


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: pthread langsamer?
BeitragVerfasst: 03 Jun 2008, 13:40 
Offline
Interpreter
Benutzeravatar

Registriert: 05 Jun 2005, 01:54
Beiträge: 3225
murphy hat geschrieben:
einen habe ich schon gefunden: mit CFLAGS=-O3 geht es noch schneller :)
Aufpassen, aus langjähriger Gentoo-Erfahrung kann ich sagen dass -O3 manchmal instabile Binaries produziert, mit -O2 ist man da auf der sicheren Seite. Aber solange Ruby mit -O3 normal läuft, kannst du das mal so drin lassen.

Ansonsten hab ich bei meinem configure nur --enable-shared angegeben, sonst nix.

_________________


1
2
3
alias L lambda
p L{|y|L{|f|y[L{|x|f[f][x]}]}[L{|f|y[L{|x|f[f][x]}]}]}[L{|z|L{|l|l.empty?? 0:1+z[l.drop(1)]}}][%w<a b c d e f g h i j>]
#=>10


Nuclear Powered Soup | Nuclear Powered Blog


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: 03 Jun 2008, 13:48 
Offline
Böser Admin 2
Benutzeravatar

Registriert: 17 Mär 2004, 17:03
Beiträge: 2544
Wohnort: Berlin
was macht das eigentlich?

_________________
Ruby-Mine | (almost) murphy.de | rubychan.de


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: 03 Jun 2008, 13:56 
Offline
Interpreter
Benutzeravatar

Registriert: 05 Jun 2005, 01:54
Beiträge: 3225
murphy hat geschrieben:
was macht das eigentlich?
-O3? Das sagt GCC das er alle Optimierungen durchführen soll, wie Function Inlining, Loop Unrolling, etc. Der tatsächliche Geschwindigkeitsvorteil ist je nach Programm verschieden, manchmal läuft ein Programm mit -O3 sogar langsamer als wenn es mit -O2 oder -O1 kompiliert wird (ist aber eher die Ausnahme).

_________________


1
2
3
alias L lambda
p L{|y|L{|f|y[L{|x|f[f][x]}]}[L{|f|y[L{|x|f[f][x]}]}]}[L{|z|L{|l|l.empty?? 0:1+z[l.drop(1)]}}][%w<a b c d e f g h i j>]
#=>10


Nuclear Powered Soup | Nuclear Powered Blog


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: 03 Jun 2008, 14:00 
Offline
Böser Admin 2
Benutzeravatar

Registriert: 17 Mär 2004, 17:03
Beiträge: 2544
Wohnort: Berlin
sorry, ich meinte --enable-shared...

_________________
Ruby-Mine | (almost) murphy.de | rubychan.de


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: 03 Jun 2008, 15:13 
Offline
Interpreter
Benutzeravatar

Registriert: 05 Jun 2005, 01:54
Beiträge: 3225
murphy hat geschrieben:
sorry, ich meinte --enable-shared...
Ah. Das baut zusätzlich libruby18.so (oder so ähnlich), mit dem man Ruby in andere Programme einbinden kann.

_________________


1
2
3
alias L lambda
p L{|y|L{|f|y[L{|x|f[f][x]}]}[L{|f|y[L{|x|f[f][x]}]}]}[L{|z|L{|l|l.empty?? 0:1+z[l.drop(1)]}}][%w<a b c d e f g h i j>]
#=>10


Nuclear Powered Soup | Nuclear Powered Blog


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: 04 Jun 2008, 21:24 
Offline
Interpreter
Benutzeravatar

Registriert: 02 Jan 2005, 20:15
Beiträge: 1360
Ist --enable-shared nicht standard, ausser man gibt explizit --enable-static an?

Dem -O3 kann ich aber zustimmen, ich denke das ist in der Praxis kein Vorteil mehr, da man ja hier und da Probleme hat. Wenns mit -O2 läuft isses finde ich ausreichend. Da schon lieber etwas mehr RAM :)

_________________
Retired. Macht es gut!


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: 04 Jun 2008, 21:45 
Offline
Interpreter
Benutzeravatar

Registriert: 03 Jul 2006, 14:53
Beiträge: 4872
Wohnort: RLP
-O3 war "unsafe optimizations", oder? Meines Halbwissens sind da Codetransformationen drin, bei denen nicht nachgewiesen ist, das sie äquivalent sind.


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: 04 Jun 2008, 22:33 
Offline
Böser Admin 2
Benutzeravatar

Registriert: 17 Mär 2004, 17:03
Beiträge: 2544
Wohnort: Berlin
bei mir sind es an die 20% performancegewinn mit -O3 statt -O2 gewesen - das fällt schon ins gewicht, zum beispiel wenn man oft testet.

_________________
Ruby-Mine | (almost) murphy.de | rubychan.de


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: 04 Jun 2008, 22:51 
Offline
Interpreter
Benutzeravatar

Registriert: 05 Jun 2005, 01:54
Beiträge: 3225
murphy hat geschrieben:
bei mir sind es an die 20% performancegewinn mit -O3 statt -O2 gewesen - das fällt schon ins gewicht, zum beispiel wenn man oft testet.
Wie gesagt, manchmal (oft genug) gibts mit -O3 Probleme. Man muss halt immer testen ob die erzeugte Binary auch stabil läuft.

_________________


1
2
3
alias L lambda
p L{|y|L{|f|y[L{|x|f[f][x]}]}[L{|f|y[L{|x|f[f][x]}]}]}[L{|z|L{|l|l.empty?? 0:1+z[l.drop(1)]}}][%w<a b c d e f g h i j>]
#=>10


Nuclear Powered Soup | Nuclear Powered Blog


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: 05 Jun 2008, 11:10 
Offline
Interpreter

Registriert: 29 Okt 2002, 14:25
Beiträge: 2137
cypher hat geschrieben:
Wie gesagt, manchmal (oft genug) gibts mit -O3 Probleme. Man muss halt immer testen ob die erzeugte Binary auch stabil läuft.

... und vor allem aufpassen, dass man keinen Bug meldet, der eigentlich keiner ist... :roll:

_________________
Ruby-Mine

"Simplicity is the ultimate sophistication." Leonardo da Vinci


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: 05 Jun 2008, 11:12 
Offline
Interpreter
Benutzeravatar

Registriert: 02 Jan 2005, 20:15
Beiträge: 1360
hehe

_________________
Retired. Macht es gut!


Nach oben
 Profil  
 
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 12 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach: