Monday, July 19, 2004

วัดความเร็ว .Net Compact Framework

ปกติเมื่อมีโอกาสได้เล่นของใหม่ พวกฮาร์ดแวร์หรือคอมไพเลอร์ มักจะชอบเอามารัน Benchmark เก็บข้อมูลไว้ ในอดีตก็เคยมี PiBench (และ PiBench-SMP) ซึ่งวัดความเร็วลูปเล็กๆ บน CPU ต่างๆ เมื่อใช้ Compiler ต่างๆ บน ฮาร์ดแวร์ต่างๆ

มาถึงยุคของอุปกรณ์พกพา PDA/Java Phone ก็เอาโปรแกรมมาแก้หน่อยนึง อุปกรณ์พวกนี้มักไม่มี FPU มาด้วย ไม่ถนัดการคำนวนทศนิยม เลยต้องแยกทดสอบ Int กับ Double เคยลองบนเครื่องตัวเองและวานให้เพื่อนๆลอง ได้ผลดังในหน้า PDA Performance Test

วันนี้นั่งอ่านหนังสือบน Safari ที่เคยพูดถึง (ตกลงสมัครเป็นลูกค้าไปเรียบร้อยแล้ว) ไปสะดุดตาตรง .Net Compact Framework อ้าว ใช้ได้บน Pocket PC 2002 นี่ (คือ ไม่รู้ไปจำฝังใจมาจากไหนว่า .Net Compact Framework ต้องการ PocketPC 2003 ขึ้นไป ก็เลยไม่เคยคิดจะลองเล่น) ดีเลยจะได้ลองกับ TOSHIBA Genio GX ที่มีอยู่

ไม่รู้จะเขียนโปรแกรมอะไรก็เอา PDA Bench อันเดิมมาทดสอบก่อนเลย ได้ผลดังนี้

ภาษา/Runtime Int (ms) Double (ms)
C#/.Net CF 1.0SP2 3641, 3651 2491, 2472
eVC++/Native 1213, 1202 2027, 2019
Java/Jeode 3.1 3022, 2995 2663, 2639
Java/Sun Personal Java 1.1 beta1 12000, 11000 3000
(Timer ของ Sun Personal Java ค่อนข้างหยาบ อ่านค่าได้ระดับ "วินาที" ทั้งหมดรันบนเครื่อง PDA เครื่องเดียวกัน)

ดูเหมือน .Net Compact จะเร็วพอๆกันกับ Java VM ของ Jeode แต่เท่าที่เล่นดู สำหรับ PocketPC 2002 นี้ .Net เขียนง่ายกว่าแยะ ติดตั้ง/ใช้งาน โปรแกรมก็ง่ายกว่า (ชักจะติดใจ)

ปัญหาของ Java บน PocketPC ที่พบ คือ เขียนโปรแกรมเสร็จ ลองรันด้วย JDK (ผ่าน) รันอีกทีด้วย PersonalJava (ผ่าน) แต่พอเอาไปรันบนอุปกรณ์จริง (เดี้ยง) บน Jeode กับ SUN Personal Java เอง บางทีผลก็ไม่เหมือนกัน กว่าจะรันได้ก็ต้องมาทำ .bat ไฟล์สำหรับเรียกโปรแกรม argument ยาวเหยียด

ส่วนของ .Net ได้ .exe มา ก็ทดลองรับบน PC (ผ่าน) รันอีกทีบน Emulator (ผ่าน) แล้วก็เอาไฟล์เดียวกันนั่นแหละ (ชื่อ .exe แต่เนื้อในเป็น MSIL: Microsoft intermediate language) โยนลงไปใน PDA รัน (ผ่าน)

เพิ่มเติม

ฝนส่งผล PiBench กับ PiBench-SMP บนเครื่องใหม่ HP-DL145 Dual Opteron248 (2.2GHz) มาให้

No comments: