ווטסאפ - לינוקס, BSD, קוד פתוח ותוכנה חופשית בעברית. Whatsup - Linux, BSD, open source and free software in Hebrew

 
 
  כניסת חברים · רישום · שכחתי סיסמה  
tux the penguin
תגובה לנושא
צפיה בנושא הבא Printable version התחבר כדי לבדוק הודעות פרטיות צפיה בנושא הקודם
omriלא בפורום כעת ת.הצטרפות: 24/11/2003 · הודעות: 1148 ·
 

הודעה פורסם: 30/10/2004 - 12:40
נושא ההודעה: perl, python, C benchmarks (תוקן, תודה שלומי)

לפני הכל, את כל הבדיקות ערכתי על המערכת הבאה:
קוד:

$ python -V
Python 2.3.4
$ perl -v

This is perl, v5.8.5 built for i686-linux

Copyright 1987-2004, Larry Wall

Perl may be copied only under the terms of either the Artistic License or the
GNU General Public License, which may be found in the Perl 5 source kit.

Complete documentation for Perl, including FAQ lists, should be found on
this system using `man perl' or `perldoc perl'.  If you have access to the
Internet, point your browser at http://www.perl.com/, the Perl Home Page.
$ gcc --version
gcc (GCC) 3.4.2 20041025 (Gentoo Linux 3.4.2-r3, ssp-3.4.1-1, pie-8.7.6.5)
Copyright (C) 2004 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

קוד:

$ cat /proc/version
Linux version 2.6.8.1 (root@omri) (gcc version 3.4.1 20040803 (Gentoo Linux 3.4.1-r2, ssp-3.4-2, pie-8.7.6.5)) #1 Sat Sep 18 14:34:29 IDT 2004

CFLAGS="-march=pentium4 -O2 -pipe"

קוד:

             total       used       free     shared    buffers     cached
Mem:           501        468         33          0         34        231
-/+ buffers/cache:        202        299
Swap:          972          7        965

קוד:

processor       : 0
vendor_id       : GenuineIntel
cpu family      : 15
model           : 2
model name      : Intel(R) Pentium(R) 4 CPU 2.40GHz
stepping        : 7
cpu MHz         : 2411.618
cache size      : 512 KB
fdiv_bug        : no
hlt_bug         : no
f00f_bug        : no
coma_bug        : no
fpu             : yes
fpu_exception   : yes
cpuid level     : 2
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe cid
bogomips        : 4784.12


קוד:
omri@omri ~/notes/benchmarks $ time perl prime.pl

real    0m22.713s
user    0m22.313s
sys     0m0.004s
omri@omri ~/notes/benchmarks $ time python prime.py

real    0m13.439s
user    0m12.808s
sys     0m0.007s
omri@omri ~/notes/benchmarks $ time python prime+psyco.py

real    0m2.415s
user    0m2.221s
sys     0m0.008s
omri@omri ~/notes/benchmarks $ gcc -lm -o prime prime.c
omri@omri ~/notes/benchmarks $ time ./prime

real    0m0.621s
user    0m0.587s
sys     0m0.001s
omri@omri ~/notes/benchmarks $ gcc -lm -ffast-math -o prime prime.c
omri@omri ~/notes/benchmarks $ time ./prime

real    0m0.662s
user    0m0.613s
sys     0m0.001s
omri@omri ~/notes/benchmarks $ gcc -march=pentium4 -lm -ffast-math -o prime prime.c
omri@omri ~/notes/benchmarks $ time ./prime

real    0m0.676s
user    0m0.613s
sys     0m0.000s
omri@omri ~/notes/benchmarks $ gcc -march=pentium4 -omit-frame-pointer -lm -ffast-math -o prime prime.c
omri@omri ~/notes/benchmarks $ time ./prime

real    0m0.661s
user    0m0.610s
sys     0m0.000s
omri@omri ~/notes/benchmarks $ gcc -march=pentium4 -omit-frame-pointer -lm -ffast-math -O2 -o prime prime.c
omri@omri ~/notes/benchmarks $ time ./prime

real    0m0.581s
user    0m0.537s
sys     0m0.000s
omri@omri ~/notes/benchmarks $ gcc -march=pentium4 -omit-frame-pointer -lm -ffast-math -O3 -o prime prime.c
omri@omri ~/notes/benchmarks $ time ./prime

real    0m0.585s
user    0m0.531s
sys     0m0.002s


הקוד של כל התוכנות נמצא פה:
http://ftp1.sam-hosting.co.il/~omri/benchmarks/

ובכן, התוצאות מדברות בעד עצמן Smile

_________________
Sure linux is user-friendly, it's just picky about who its friends are Smile

נערך לאחרונה על-ידי omri בתאריך 30/10/2004 - 17:28, סך-הכל נערך 2 פעמים
 
 צפיה בפרופיל המשתמש שלח הודעה פרטית ביקור באתר המפרסם  
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
אורח · ·
 

הודעה פורסם: 30/10/2004 - 12:53
נושא ההודעה:

לא הבנתי מה בדיוק הקטע פה
התוכנית שלך רצה מאד מהר ב c ו python קרובה לזה בעוד ש perl זוחלת? זה המסר?

צר לי, אבל הbranchmark שלך רחוק מלהצביע על משהו. אתה צריך לבחון מגוון רחב מאד של פעולות ובעיות. לא רק לולאה וחיבור.
 
   
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
omriלא בפורום כעת ת.הצטרפות: 24/11/2003 · הודעות: 1148 ·
 

הודעה פורסם: 30/10/2004 - 12:56
נושא ההודעה:

Anonymous :
לא הבנתי מה בדיוק הקטע פה
התוכנית שלך רצה מאד מהר ב c ו python קרובה לזה בעוד ש perl זוחלת? זה המסר?

צר לי, אבל הbranchmark שלך רחוק מלהצביע על משהו. אתה צריך לבחון מגוון רחב מאד של פעולות ובעיות. לא רק לולאה וחיבור.


אני יודע שזה לא benchmark אמין מפני שלא בחנתי יותר מדי דברים,
_אבל_, הרעיון של ה benchmark התחיל מתוכנית בפייטון שהפעלתי עם ובלי psyco
ראיתי את השיפור ביצועים האדיר אז החלטתי להשוות את זה לפרל,
אחרי דיון ב #linux.il החלטתי גם להשוות ל C
ככה הכל התפתח...

_________________
Sure linux is user-friendly, it's just picky about who its friends are Smile
 
 צפיה בפרופיל המשתמש שלח הודעה פרטית ביקור באתר המפרסם  
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
wliadלא בפורום כעתSite Moderator ת.הצטרפות: 25/05/2003 · הודעות: 1285 · מיקום: צפון הארץ
 

הודעה פורסם: 30/10/2004 - 13:03
נושא ההודעה:

מה בדיוק ניסית לבדוק פה?
 
 צפיה בפרופיל המשתמש שלח הודעה פרטית ביקור באתר המפרסם Yahoo Messenger MSN Messenger מספר ICQ 
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
IPלא בפורום כעת ת.הצטרפות: 27/06/2003 · הודעות: 1023 · מיקום: תל אביב
 

הודעה פורסם: 30/10/2004 - 13:15
נושא ההודעה:

תוסיף עוד אפס, כך שזה יבדוק על 10 מיליון בשביל לקבל תוצאות אמיתיות יותר (במיוחד בשביל הג'אווה שאני מקווה שתבדוק).
זה יהיה נחמד אם תבדוק את זה (אני לא יודע כ"כ טוב ג'אווה. אולי אפשר ליעל את התוכנית שכתבתי) גם עם סאן ג'אווה 5:
קוד:

public class Prime
{
        public static void main(String[] args)
        {
                int prime=0;
                long i=0,ii=0;
                for (i=3; i<=10000000; i=i+2) {
                        prime=1;
                        for (ii=3; ii<=Math.sqrt(i); ii=ii+2) {
                                if (i % ii== 0) {
                                        prime=0;
                                        break;
                                }
                        }
if (prime!=0) {
                        }
                }
        }
}


ודרך אגב, על האת'לון 1820Mhz (זה BARTON 2500 עם באס גבוה, ומכפלה נמוכה) שלי C לקח 1.307s ופייטון-פסיקו לקח 1.879s.
38.509s לפייטון-פיכו עם 10 מליון.
1m37.021s לג'אווה 5 עם 10 מליון.
32.447s לC עם 10 מליון.

_________________
קוד:
$ uname  --operating-system
GNU/Linux


נערך לאחרונה על-ידי IP בתאריך 30/10/2004 - 13:34, סך-הכל נערך 2 פעמים
 
 צפיה בפרופיל המשתמש שלח הודעה פרטית שלח דוא\ MSN Messenger מספר ICQ 
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
omriלא בפורום כעת ת.הצטרפות: 24/11/2003 · הודעות: 1148 ·
 

הודעה פורסם: 30/10/2004 - 13:20
נושא ההודעה:

IP :
תוסיף עוד אפס, כך שזה יבדוק על 10 מיליון בשביל לקבל תוצאות אמיתיות יותר (במיוחד בשביל הג'אווה שאני מקווה שתבדוק).
זה יהיה נחמד אם תבדוק את זה (אני לא יודע כ"כ טוב ג'אווה. אולי אפשר ליעל את התוכנית שכתבתי) גם עם סאן ג'אווה 5:
קוד:

public class Prime
{
        public static void main(String[] args)
        {
                int prime=0;
                long i=0,ii=0;
                for (i=3; i<=10000000; i=i+2) {
                        prime=1;
                        for (ii=3; ii<=Math.sqrt(i); ii=ii+2) {
                                if (i % ii== 0) {
                                        prime=0;
                                        break;
                                }
                        }
                }
        }
}


ודרך אגב, על האת'לון 1820Mhz (זה BARTON 2500 עם באס גבוה, ומכפלה נמוכה) שלי C לקח 1.307s ופייטון-פסיקו לקח 1.879s.
38.509s לפייטון-פיכו עם 10 מליון.
1m35.689s לג'אווה 5 עם 10 מליון.


ה IF שלא עושה כלום נמצא בכל התוכניות מסיבה כלשהי, כשאתה לא שם אותו בתוכנית ג'אווה שלך אתה "מרמה" Smile

_________________
Sure linux is user-friendly, it's just picky about who its friends are Smile
 
 צפיה בפרופיל המשתמש שלח הודעה פרטית ביקור באתר המפרסם  
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
omriלא בפורום כעת ת.הצטרפות: 24/11/2003 · הודעות: 1148 ·
 

הודעה פורסם: 30/10/2004 - 13:20
נושא ההודעה:

wliad :
מה בדיוק ניסית לבדוק פה?


את הביצועים של כל אחת מהשפות

_________________
Sure linux is user-friendly, it's just picky about who its friends are Smile
 
 צפיה בפרופיל המשתמש שלח הודעה פרטית ביקור באתר המפרסם  
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
אורח · ·
 

הודעה פורסם: 30/10/2004 - 13:31
נושא ההודעה:

omri :
wliad :
מה בדיוק ניסית לבדוק פה?


את הביצועים של כל אחת מהשפות


הייתי אומר את הביצועים של כל אחד מהקומפילרים.
 
   
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
IPלא בפורום כעת ת.הצטרפות: 27/06/2003 · הודעות: 1023 · מיקום: תל אביב
 

הודעה פורסם: 30/10/2004 - 13:38
נושא ההודעה:

omri, אופס... תיקנתי ועדכנתי את התוצאות (עוד שנייה וחצי).

וההשוואה הזאת בודקת כמובן רק על התוכנית המסויימת הזאת. יכול מאוד להיות שביצועים של תוכניות אחרות בשפות/מהדרים שונים יהיו שונים.

_________________
קוד:
$ uname  --operating-system
GNU/Linux
 
 צפיה בפרופיל המשתמש שלח הודעה פרטית שלח דוא\ MSN Messenger מספר ICQ 
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
omriלא בפורום כעת ת.הצטרפות: 24/11/2003 · הודעות: 1148 ·
 

הודעה פורסם: 30/10/2004 - 13:42
נושא ההודעה:

Anonymous :
omri :
wliad :
מה בדיוק ניסית לבדוק פה?


את הביצועים של כל אחת מהשפות


הייתי אומר את הביצועים של כל אחד מהקומפילרים.


python ו perl הינן שפות סקריפט, ללא קומפיילר...
בקשר ל C, זו השוואת ביצועים עם אופטימיזציות שונות

_________________
Sure linux is user-friendly, it's just picky about who its friends are Smile
 
 צפיה בפרופיל המשתמש שלח הודעה פרטית ביקור באתר המפרסם  
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
omriלא בפורום כעת ת.הצטרפות: 24/11/2003 · הודעות: 1148 ·
 

הודעה פורסם: 30/10/2004 - 13:43
נושא ההודעה:

IP :
omri, אופס... תיקנתי ועדכנתי את התוצאות (עוד שנייה וחצי).

וההשוואה הזאת בודקת כמובן רק על התוכנית המסויימת הזאת. יכול מאוד להיות שביצועים של תוכניות אחרות בשפות/מהדרים שונים יהיו שונים.


כמובן, אין לי ספק
אבל סתם בשביל לקבל מושג על הביצועים..

_________________
Sure linux is user-friendly, it's just picky about who its friends are Smile
 
 צפיה בפרופיל המשתמש שלח הודעה פרטית ביקור באתר המפרסם  
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
אורח · ·
 

הודעה פורסם: 30/10/2004 - 13:52
נושא ההודעה:

אגב, לבדיקה קצת יותר אמינה, מומלץ להריץ כל פקודה בדיקה של time פעמיים בגלל caching ולהשוות שוב. בכל מקרה, דווקא אהבתי את הרעיון, למרות שהתוצאה היתה ברורה לכולם עוד לפני הקריאה Wink
 
   
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
אורח · ·
 

הודעה פורסם: 30/10/2004 - 14:07
נושא ההודעה:

omri :
Anonymous :
omri :
wliad :
מה בדיוק ניסית לבדוק פה?


את הביצועים של כל אחת מהשפות


הייתי אומר את הביצועים של כל אחד מהקומפילרים.


python ו perl הינן שפות סקריפט, ללא קומפיילר...
בקשר ל C, זו השוואת ביצועים עם אופטימיזציות שונות


באמת? אז מה לדעתך הקומפילר עושה?
 
   
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
omriלא בפורום כעת ת.הצטרפות: 24/11/2003 · הודעות: 1148 ·
 

הודעה פורסם: 30/10/2004 - 14:16
נושא ההודעה:

Anonymous :
omri :
Anonymous :
omri :
wliad :
מה בדיוק ניסית לבדוק פה?


את הביצועים של כל אחת מהשפות


הייתי אומר את הביצועים של כל אחד מהקומפילרים.


python ו perl הינן שפות סקריפט, ללא קומפיילר...
בקשר ל C, זו השוואת ביצועים עם אופטימיזציות שונות


באמת? אז מה לדעתך הקומפילר עושה?


קומפיילר הופך את הקוד לקובץ בינארי בר-הרצה (executeable)
interpreter מריץ את הקוד בלי קימפול

_________________
Sure linux is user-friendly, it's just picky about who its friends are Smile
 
 צפיה בפרופיל המשתמש שלח הודעה פרטית ביקור באתר המפרסם  
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
shlomifלא בפורום כעת ת.הצטרפות: 12/08/2003 · הודעות: 26 · מיקום: תל אביב
 

הודעה פורסם: 30/10/2004 - 14:29
נושא ההודעה: התוכנית של פרל אינה אופטימלית

בתוכנית של פרל, ההשמה ל-prime נמצאת בתוך הלולאה הפנימית ולא מחוצה לה. בשאר התוכניות היא נמצאת לפני הלולאה הפנימית. כך יש הרבה השמות מיותרות. בנוסף, אתה מחשב שוב ושוב את
int(sqrt($i))
שזה דבר יקר. בנוסף מאוד רצוי להשתמש ב-use integer, כי אחרת כל הפעולות הן במספרי נקודה-צפה.

התוכנית הזאת, שהיא יותר אופטימילית מהבחינות האלה:

קוד:

#!/usr/bin/perl

use integer;

for ($i=3; $i<=1000000; $i+=2) {
    $limit = int(sqrt($i));
    $prime = 1;
   for ($ii=3; $ii<=$limit; $ii+=2) {
      #print "i=", $i, ", ii=", $ii, "\n";
      if (!($i % $ii)) {
         #print $i, " / ", $ii, " = ", $i/$ii, "\n";
         $prime = 0;
         last;
      }
   }
   if ( $prime ) {
      #print $i, " is prime\n";
   }
}


רצה ב28.9- שניות במקום 47.89 שניות על המחשב שלי.
 
 צפיה בפרופיל המשתמש שלח הודעה פרטית שלח דוא\ ביקור באתר המפרסם כתובת AIM Yahoo Messenger MSN Messenger מספר ICQ 
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
omriלא בפורום כעת ת.הצטרפות: 24/11/2003 · הודעות: 1148 ·
 

הודעה פורסם: 30/10/2004 - 14:43
נושא ההודעה: Re: התוכנית של פרל אינה אופטימלית

shlomif :
בתוכנית של פרל, ההשמה ל-prime נמצאת בתוך הלולאה הפנימית ולא מחוצה לה. בשאר התוכניות היא נמצאת לפני הלולאה הפנימית. כך יש הרבה השמות מיותרות. בנוסף, אתה מחשב שוב ושוב את
int(sqrt($i))
שזה דבר יקר. בנוסף מאוד רצוי להשתמש ב-use integer, כי אחרת כל הפעולות הן במספרי נקודה-צפה.

התוכנית הזאת, שהיא יותר אופטימילית מהבחינות האלה:

קוד:

#!/usr/bin/perl

use integer;

for ($i=3; $i<=1000000; $i+=2) {
    $limit = int(sqrt($i));
    $prime = 1;
   for ($ii=3; $ii<=$limit; $ii+=2) {
      #print "i=", $i, ", ii=", $ii, "\n";
      if (!($i % $ii)) {
         #print $i, " / ", $ii, " = ", $i/$ii, "\n";
         $prime = 0;
         last;
      }
   }
   if ( $prime ) {
      #print $i, " is prime\n";
   }
}


רצה ב28.9- שניות במקום 47.89 שניות על המחשב שלי.


באמת הייתה לי שם טעות עם ההשמה של prime, לא שמתי לב לזה
בקשר לחישוב של sqrt(), לא ידעתי שפרל עובדת ככה (אני מניח שגם הקוד ב C יכול להשתפר כשאני אתקן את זה)

כשאני אחזור אני אבצע את הבדיקות מחדש Smile

_________________
Sure linux is user-friendly, it's just picky about who its friends are Smile
 
 צפיה בפרופיל המשתמש שלח הודעה פרטית ביקור באתר המפרסם  
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
אורח · ·
 

הודעה פורסם: 30/10/2004 - 15:59
נושא ההודעה: Re: התוכנית של פרל אינה אופטימלית

omri :

כשאני אחזור אני אבצע את הבדיקות מחדש Smile


ואני אומר: למה לבזבז את הזמן? אפשר לעשות השוואות הרבה יותר מעניינות, כמו למשל מה יותר מהיר: טרקטור, מכונית פרטית או מכונית מרוץ.

או עם מה יותר קל להכניס מסמר לקיר: מברג, פטיש או צבט?

וכולי וכולי. שעות של הנאה!
 
   
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
wliadלא בפורום כעתSite Moderator ת.הצטרפות: 25/05/2003 · הודעות: 1285 · מיקום: צפון הארץ
 

הודעה פורסם: 30/10/2004 - 16:03
נושא ההודעה:

אוי. זה כל מה שיש לי לומר בתגובה.
 
 צפיה בפרופיל המשתמש שלח הודעה פרטית ביקור באתר המפרסם Yahoo Messenger MSN Messenger מספר ICQ 
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
shlomi-lלא בפורום כעת ת.הצטרפות: 04/05/2003 · הודעות: 1399 ·
 

הודעה פורסם: 30/10/2004 - 16:50
נושא ההודעה:

בפייתון אתה יכול "לקמפל" את הקוד לקובץ pyc שהוא bytecode ויותר קל לקריאה על ידי ה interpreter , תנסה לבדוק גם את ההרצה של קובץ כזה, יכול להיות שיהיה שיפור.
 
 צפיה בפרופיל המשתמש שלח הודעה פרטית ביקור באתר המפרסם MSN Messenger  
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
אורח · ·
 

הודעה פורסם: 30/10/2004 - 16:59
נושא ההודעה:

shlomi-l :
בפייתון אתה יכול "לקמפל" את הקוד לקובץ pyc שהוא bytecode ויותר קל לקריאה על ידי ה interpreter , תנסה לבדוק גם את ההרצה של קובץ כזה, יכול להיות שיהיה שיפור.


בקרוב נצפה ממך לbenchmarks רציניים ב smalltalk
Twisted Evil
 
   
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
omriלא בפורום כעת ת.הצטרפות: 24/11/2003 · הודעות: 1148 ·
 

הודעה פורסם: 30/10/2004 - 17:03
נושא ההודעה:

shlomi-l :
בפייתון אתה יכול "לקמפל" את הקוד לקובץ pyc שהוא bytecode ויותר קל לקריאה על ידי ה interpreter , תנסה לבדוק גם את ההרצה של קובץ כזה, יכול להיות שיהיה שיפור.


הרעיון מאחורי זה הוא תוכנית קטנה שמריצה תוכנית גדולה
רק את המודולים אפשר לקמפל ל pyc

_________________
Sure linux is user-friendly, it's just picky about who its friends are Smile
 
 צפיה בפרופיל המשתמש שלח הודעה פרטית ביקור באתר המפרסם  
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
אורח · ·
 

הודעה פורסם: 30/10/2004 - 17:09
נושא ההודעה:

omri :
shlomi-l :
בפייתון אתה יכול "לקמפל" את הקוד לקובץ pyc שהוא bytecode ויותר קל לקריאה על ידי ה interpreter , תנסה לבדוק גם את ההרצה של קובץ כזה, יכול להיות שיהיה שיפור.


הרעיון מאחורי זה הוא תוכנית קטנה שמריצה תוכנית גדולה
רק את המודולים אפשר לקמפל ל pyc


לא יודע מה לגבי linux, אבל ב windows אני הצלחתי לקמפל את התוכנית שלי ל exe עם py2exe. עובד נפלא.
זכור לי שקיים משהו דומה גם ללינוקס...
 
   
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
omriלא בפורום כעת ת.הצטרפות: 24/11/2003 · הודעות: 1148 ·
 

הודעה פורסם: 30/10/2004 - 17:21
נושא ההודעה:

Anonymous :
omri :
shlomi-l :
בפייתון אתה יכול "לקמפל" את הקוד לקובץ pyc שהוא bytecode ויותר קל לקריאה על ידי ה interpreter , תנסה לבדוק גם את ההרצה של קובץ כזה, יכול להיות שיהיה שיפור.


הרעיון מאחורי זה הוא תוכנית קטנה שמריצה תוכנית גדולה
רק את המודולים אפשר לקמפל ל pyc


לא יודע מה לגבי linux, אבל ב windows אני הצלחתי לקמפל את התוכנית שלי ל exe עם py2exe. עובד נפלא.
זכור לי שקיים משהו דומה גם ללינוקס...


הרעיון מאחורי py2exe הוא להכניס את כל הקבצים שהתוכנית שלך דורשת לקובץ EXE אחד
אם תראה, לפני שזה הופך ל EXE זה יוצר תיקייה עם כמה קבצים (python23.dll ביניהם)

_________________
Sure linux is user-friendly, it's just picky about who its friends are Smile
 
 צפיה בפרופיל המשתמש שלח הודעה פרטית ביקור באתר המפרסם  
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
omriלא בפורום כעת ת.הצטרפות: 24/11/2003 · הודעות: 1148 ·
 

הודעה פורסם: 30/10/2004 - 17:36
נושא ההודעה:

מכיוון שהייתה טעות בקוד של C ושל פרל (sqrt חושב כל פעם במקום פעם אחת בהתחלה) ואחרי התיקון ראיתי שהתוצאות מאוד דומות בין האופטימיזציות ב C, החלטתי לעשות סיבוב שני ל C Smile
הפעם, במקום מיליון נלך על עשרה מיליון
והנה התוצאות:
קוד:
omri@omri ~/notes/benchmarks $ gcc -lm -o prime prime.c
omri@omri ~/notes/benchmarks $ time ./prime

real    0m14.445s
user    0m14.025s
sys     0m0.001s
omri@omri ~/notes/benchmarks $ gcc -lm -ffast-math -o prime prime.c
omri@omri ~/notes/benchmarks $ time ./prime

real    0m15.166s
user    0m14.715s
sys     0m0.001s
omri@omri ~/notes/benchmarks $ gcc -lm -march=pentium4 -ffast-math -o prime prime.c
omri@omri ~/notes/benchmarks $ time ./prime

real    0m15.355s
user    0m14.847s
sys     0m0.002s
omri@omri ~/notes/benchmarks $ gcc -lm -march=pentium4 -omit-frame-pointer -ffast-math -o prime prime.c
omri@omri ~/notes/benchmarks $ time ./prime

real    0m15.289s
user    0m14.835s
sys     0m0.003s
omri@omri ~/notes/benchmarks $ gcc -lm -march=pentium4 -omit-frame-pointer -ffast-math -O2 -o prime prime.c
omri@omri ~/notes/benchmarks $ time ./prime

real    0m13.161s
user    0m12.735s
sys     0m0.004s
omri@omri ~/notes/benchmarks $ gcc -lm -march=pentium4 -omit-frame-pointer -ffast-math -O3 -o prime prime.c
omri@omri ~/notes/benchmarks $ time ./prime

real    0m13.141s
user    0m12.744s
sys     0m0.000s

_________________
Sure linux is user-friendly, it's just picky about who its friends are Smile
 
 צפיה בפרופיל המשתמש שלח הודעה פרטית ביקור באתר המפרסם  
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
elcucoלא בפורום כעת ת.הצטרפות: 14/10/2003 · הודעות: 6255 ·
 

הודעה פורסם: 30/10/2004 - 17:54
נושא ההודעה:

אתה יכול לשים את התוצאות בטבלה מסודרת באתר שלך בבקשה?
 
 צפיה בפרופיל המשתמש שלח הודעה פרטית  
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
mksoftלא בפורום כעתSite Admin ת.הצטרפות: 17/03/2002 · הודעות: 10514 · מיקום: כדור הארץ
 

הודעה פורסם: 30/10/2004 - 18:01
נושא ההודעה:

פשוט לקחת לולאות מקוננות ומדדת כמה זמן הן רצות בכל שפה. אך לכשעצמו הבדיקות האלה חסרות משמעות ואינן מתארות כלום, במיוחד ביישום במציאות.

ניקח את פייתון לדוגמא:

- השתמשת בטווח, ניסית במקום להשתמש בלולאת while שמגדילה ב-1 במקום Question
- פייתון תומכת ב-else על לולאה, אפשר היה להשתמש בה
- לפייתון יש מודול לטיפול בדברים כאלה, numpy והיורש שלו numarray המשמשים ביישומים מדעיים ומשפרים ביצועים משמעותית. לא השתמשת בהם. גם ל-java יש ספריות כאלה ככל הזכור לי.


בנוסף דבר כזה לא מתאר כלום במציאות. אם היינו מנסים ליישם את הבעיה במציאות, מן הסתם הייתה מתבקשת פונקציה שמחזירה מערך או רשימה של המספרים הראשוניים עבור טווח מבוקש. איך היית מיישם ב-c Question מה ההשפעה על הביצועים לעומת שפות שרשימות הן דבר טבעי עבורןQuestion

ואם הייתי מבקש לשמור את המערך על הדיסק ולשחזר אותו כדי לעשות בו שימוש חוזר עבור ערכים שכבר נמצאו (כדי לא לבזבז זמן עבור כאלה שכבר נמצאו בסטים ענקיים) Question איך זה היה משפיע על היישום בשפות השונות Question

ובמקרים שמיישמים את התכונות הנוספות, איך זה משפיע על תחזוקת הקוד Question קלות הקריאה Question בחירת שפה בפרט ופיתוח תוכנה בכלל זה לא רק מה רץ הכי מהר עבור מצב מסויים.
 
 צפיה בפרופיל המשתמש שלח הודעה פרטית שלח דוא\ ביקור באתר המפרסם  
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
omriלא בפורום כעת ת.הצטרפות: 24/11/2003 · הודעות: 1148 ·
 

הודעה פורסם: 30/10/2004 - 18:05
נושא ההודעה:

mksoft :
פשוט לקחת לולאות מקוננות ומדדת כמה זמן הן רצות בכל שפה. אך לכשעצמו הבדיקות האלה חסרות משמעות ואינן מתארות כלום, במיוחד ביישום במציאות.

ניקח את פייתון לדוגמא:

- השתמשת בטווח, ניסית במקום להשתמש בלולאת while שמגדילה ב-1 במקום Question
- פייתון תומכת ב-else על לולאה, אפשר היה להשתמש בה
- לפייתון יש מודול לטיפול בדברים כאלה, numpy והיורש שלו numarray המשמשים ביישומים מדעיים ומשפרים ביצועים משמעותית. לא השתמשת בהם. גם ל-java יש ספריות כאלה ככל הזכור לי.


בנוסף דבר כזה לא מתאר כלום במציאות. אם היינו מנסים ליישם את הבעיה במציאות, מן הסתם הייתה מתבקשת פונקציה שמחזירה מערך או רשימה של המספרים הראשוניים עבור טווח מבוקש. איך היית מיישם ב-c Question מה ההשפעה על הביצועים לעומת שפות שרשימות הן דבר טבעי עבורןQuestion

ואם הייתי מבקש לשמור את המערך על הדיסק ולשחזר אותו כדי לעשות בו שימוש חוזר עבור ערכים שכבר נמצאו (כדי לא לבזבז זמן עבור כאלה שכבר נמצאו בסטים ענקיים) Question איך זה היה משפיע על היישום בשפות השונות Question

ובמקרים שמיישמים את התכונות הנוספות, איך זה משפיע על תחזוקת הקוד Question קלות הקריאה Question בחירת שפה בפרט ופיתוח תוכנה בכלל זה לא רק מה רץ הכי מהר עבור מצב מסויים.


תקרא כמה תגובות למעלה, כתבתי שעשיתי את ההשוואה הזו בגלל שראיתי כמה psyco משפרת את הביצועים
זה התחיל סתם עם השוואה בין פייטון לפרל (השוואה פשוטה, אני שוב מציין, בלי הייתרונות של כל שפה בנפרד) והתפתח עוד...

_________________
Sure linux is user-friendly, it's just picky about who its friends are Smile
 
 צפיה בפרופיל המשתמש שלח הודעה פרטית ביקור באתר המפרסם  
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
צפריראורח · ·
 

הודעה פורסם: 30/10/2004 - 18:08
נושא ההודעה:

זמן הביצוע של התוכנית הוא ארוך מספיק, כך שזמן הקומפילציה זניח. אתה מוזמן להשוות גרסאות שונות של gcc וגם שימוש ב־tcc כדי להפוך את גרסת ה־C לסקריפט
 
   
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
צפריראורח · ·
 

הודעה פורסם: 30/10/2004 - 18:26
נושא ההודעה:

עוד הערה בקשר לקוד הפרל:

לפרל יש אופטימיזציה למקרה הסביר שבו משתנה שלולאה מקודם או מחוסר ב־1 כל פעם. לכן לולאת foreach תעבוד יותר מהר:

foreach my $i (1 .. 10) ‎

במקום מה שתוכניתני C רגילים לכתוב:
for (my $i=1; $i<10; $i++)‎

במקרה הזה יש כאן לולאה לא שגרתית במיוחד שבה רצוי לדלג על כל מספר שני במינימום הוראות ולכן לולאת for רגילה עדיין יותר מהירה. אבל זה בגלל שפרל לא כוללת אופטימיזציה למקרה הלא שכיח במיוחד הזה.
 
   
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
הצגת הודעות מלפני:     
מעבר אל:  
כל הזמנים הם GMT + 2 שעות
תגובה לנושא
צפיה בנושא הבא Printable version התחבר כדי לבדוק הודעות פרטיות צפיה בנושא הקודם
PNphpBB2 © 2003-2004 

תוכן הדיון

  1. omri
  2. אורח
  3. omri
  4. wliad
  5. IP
  6. omri
  7. omri
  8. אורח
  9. IP
  10. omri
  11. omri
  12. אורח
  13. אורח
  14. omri
  15. shlomif
  16. omri
  17. אורח
  18. wliad
  19. shlomi-l
  20. אורח
  21. omri
  22. אורח
  23. omri
  24. omri
  25. elcuco
  26. mksoft
  27. omri
  28. אורח [צפריר]
  29. אורח [צפריר]