TIL สิ่งนี้แตกต่างกันไป (มาก) นี่คือผลลัพธ์บางส่วนโดยใช้คอมไพเลอร์ gnu (btw ฉันยังตรวจสอบโดยการรวบรวมบนเครื่อง gnu g ++ 5.4 จาก xenial นั้นเร็วกว่า 4.6.3 จาก linaro อย่างแม่นยำ)
Intel i7 4700MQ xenial
short add: 0.822491
short sub: 0.832757
short mul: 1.007533
short div: 3.459642
long add: 0.824088
long sub: 0.867495
long mul: 1.017164
long div: 5.662498
long long add: 0.873705
long long sub: 0.873177
long long mul: 1.019648
long long div: 5.657374
float add: 1.137084
float sub: 1.140690
float mul: 1.410767
float div: 2.093982
double add: 1.139156
double sub: 1.146221
double mul: 1.405541
double div: 2.093173
Intel i3 2370M มีผลลัพธ์ที่คล้ายกัน
short add: 1.369983
short sub: 1.235122
short mul: 1.345993
short div: 4.198790
long add: 1.224552
long sub: 1.223314
long mul: 1.346309
long div: 7.275912
long long add: 1.235526
long long sub: 1.223865
long long mul: 1.346409
long long div: 7.271491
float add: 1.507352
float sub: 1.506573
float mul: 2.006751
float div: 2.762262
double add: 1.507561
double sub: 1.506817
double mul: 1.843164
double div: 2.877484
Intel (R) Celeron (R) 2955U (Acer C720 Chromebook ที่ใช้ xenial)
short add: 1.999639
short sub: 1.919501
short mul: 2.292759
short div: 7.801453
long add: 1.987842
long sub: 1.933746
long mul: 2.292715
long div: 12.797286
long long add: 1.920429
long long sub: 1.987339
long long mul: 2.292952
long long div: 12.795385
float add: 2.580141
float sub: 2.579344
float mul: 3.152459
float div: 4.716983
double add: 2.579279
double sub: 2.579290
double mul: 3.152649
double div: 4.691226
DigitalOcean 1GB Droplet Intel (R) Xeon (R) CPU E5-2630L v2 (ทำงานที่เชื่อถือได้)
short add: 1.094323
short sub: 1.095886
short mul: 1.356369
short div: 4.256722
long add: 1.111328
long sub: 1.079420
long mul: 1.356105
long div: 7.422517
long long add: 1.057854
long long sub: 1.099414
long long mul: 1.368913
long long div: 7.424180
float add: 1.516550
float sub: 1.544005
float mul: 1.879592
float div: 2.798318
double add: 1.534624
double sub: 1.533405
double mul: 1.866442
double div: 2.777649
โปรเซสเซอร์ AMD Opteron (tm) 4122 (แม่นยำ)
short add: 3.396932
short sub: 3.530665
short mul: 3.524118
short div: 15.226630
long add: 3.522978
long sub: 3.439746
long mul: 5.051004
long div: 15.125845
long long add: 4.008773
long long sub: 4.138124
long long mul: 5.090263
long long div: 14.769520
float add: 6.357209
float sub: 6.393084
float mul: 6.303037
float div: 17.541792
double add: 6.415921
double sub: 6.342832
double mul: 6.321899
double div: 15.362536
ใช้รหัสจากhttp://pastebin.com/Kx8WGUfgเป็นbenchmark-pc.c
g++ -fpermissive -O3 -o benchmark-pc benchmark-pc.c
ฉันวิ่งผ่านหลายครั้ง แต่ดูเหมือนว่าจะเป็นกรณีที่ตัวเลขทั่วไปเหมือนกัน
ข้อยกเว้นที่น่าสังเกตอย่างหนึ่งคือ ALU mul vs FPU mul การบวกและการลบดูเหมือนจะแตกต่างกันเล็กน้อย
นี่คือด้านบนในรูปแบบแผนภูมิ (คลิกเพื่อดูขนาดเต็มด้านล่างจะเร็วกว่าและดีกว่า):
อัปเดตเพื่อรองรับ @Peter Cordes
https://gist.github.com/Lewiscowles1986/90191c59c9aedf3d08bf0b129065cccc
i7 4700MQ Linux Ubuntu Xenial 64 บิต (ใช้แพตช์ทั้งหมดถึง 2018-03-13)
short add: 0.773049
short sub: 0.789793
short mul: 0.960152
short div: 3.273668
int add: 0.837695
int sub: 0.804066
int mul: 0.960840
int div: 3.281113
long add: 0.829946
long sub: 0.829168
long mul: 0.960717
long div: 5.363420
long long add: 0.828654
long long sub: 0.805897
long long mul: 0.964164
long long div: 5.359342
float add: 1.081649
float sub: 1.080351
float mul: 1.323401
float div: 1.984582
double add: 1.081079
double sub: 1.082572
double mul: 1.323857
double div: 1.968488
โปรเซสเซอร์ AMD Opteron (tm) 4122 (แม่นยำ, โฮสติ้งที่ใช้ร่วมกัน DreamHost)
short add: 1.235603
short sub: 1.235017
short mul: 1.280661
short div: 5.535520
int add: 1.233110
int sub: 1.232561
int mul: 1.280593
int div: 5.350998
long add: 1.281022
long sub: 1.251045
long mul: 1.834241
long div: 5.350325
long long add: 1.279738
long long sub: 1.249189
long long mul: 1.841852
long long div: 5.351960
float add: 2.307852
float sub: 2.305122
float mul: 2.298346
float div: 4.833562
double add: 2.305454
double sub: 2.307195
double mul: 2.302797
double div: 5.485736
Intel Xeon E5-2630L v2 @ 2.4GHz (Trusty 64-bit, DigitalOcean VPS)
short add: 1.040745
short sub: 0.998255
short mul: 1.240751
short div: 3.900671
int add: 1.054430
int sub: 1.000328
int mul: 1.250496
int div: 3.904415
long add: 0.995786
long sub: 1.021743
long mul: 1.335557
long div: 7.693886
long long add: 1.139643
long long sub: 1.103039
long long mul: 1.409939
long long div: 7.652080
float add: 1.572640
float sub: 1.532714
float mul: 1.864489
float div: 2.825330
double add: 1.535827
double sub: 1.535055
double mul: 1.881584
double div: 2.777245
addl
แทนที่ด้วยfadd
) วิธีเดียวที่จะได้รับการวัดผลที่ดีจริงๆคือการเป็นส่วนสำคัญของโปรแกรมจริงของคุณและโปรไฟล์เวอร์ชันต่างๆ น่าเสียดายที่อาจเป็นเรื่องยากโดยไม่ต้องใช้ความพยายามมากมาย บางทีการบอกเราถึงฮาร์ดแวร์เป้าหมายและคอมไพเลอร์ของคุณจะช่วยให้ผู้อื่นได้รับประสบการณ์ที่มีอยู่แล้วเป็นต้นเกี่ยวกับการใช้จำนวนเต็มของคุณฉันสงสัยว่าคุณสามารถสร้างfixed_point
คลาสเทมเพลตประเภทหนึ่งที่จะช่วยลดความยุ่งยากในการทำงานได้อย่างมาก