เพลิดเพลินกับแอป Android เกม เพลง ภาพยนตร์ ทีวี หนังสือ นิตยสาร และอื่นๆ อีกมากมายสำหรับ Android ล่าสุด ทุกที่ทุกเวลาผ่านอุปกรณ์ของคุณ
แอปนี้กำหนดเป้าหมายไปที่นักพัฒนาซอฟต์แวร์ หรือใครก็ตามที่สงสัยเกี่ยวกับความแตกต่างด้านประสิทธิภาพระหว่าง OpenGL และ Canvas โดยเฉพาะอย่างยิ่ง วัดประสิทธิภาพของการวาดสไปรท์ 2D อย่างชัดเจนโดยใช้ OpenGL ES 2.0 ที่มีไฮบริดของ Java และ C และการวาดสไปรท์ 2D โดยใช้ Canvas กับ Java
เมื่อคุณทำการทดสอบเสร็จแล้ว คุณสามารถดูการวิเคราะห์เกณฑ์มาตรฐานของประสิทธิภาพได้โดยการกดปุ่มย้อนกลับของอุปกรณ์
คล้ายกับ Sprite Method Test โดย Chris Pruett แต่ได้รับการอัปเดตสำหรับ OpenGL ES 2.0 การทดสอบวิธี Sprite ของเขารัน ES 1.0 ที่ล้าสมัย และใช้งานไม่ได้บน Jelly Bean (เนื่องจากการบัฟเฟอร์สามเท่า)
แอปนี้ทำงานบนอุปกรณ์ทั้งหมดที่รองรับ OpenGL ES 2.0
แอพนี้ไม่มีโฆษณาและไร้สิ่งรบกวน
รายละเอียดเพิ่มเติม:
โดยเฉพาะอย่างยิ่ง แอปนี้จะวัดประสิทธิภาพของการวาดสไปรท์ 2D อย่างชัดเจนโดยใช้ OpenGL ES 2.0 ที่มี Java และ C แบบผสม และการวาดสไปรท์ 2D โดยใช้ Canvas กับ Java
ในทุกเฟรม:
สีพื้นหลังจะเปลี่ยนไปเล็กน้อย โดยเป็นจังหวะระหว่างสีแดงและสีขาว
สไปรท์แต่ละตัวจะเคลื่อนที่ตามจำนวนสุ่ม (เกาส์เซียน) หากศูนย์กลางของสไปรท์พาดผ่านขอบของหน้าจอ สไปรท์จะย้ายไปยังตำแหน่งหน้าจอแบบสุ่ม
การทดสอบ Canvas ใช้ SurfaceView และ Canvas.drawBitmap() การคำนวณทั้งหมดเสร็จสิ้นใน Java (โดยใช้ Random.nextGaussian() และ Random.nextFloat()) บน float[]
การทดสอบ OpenGL ES 2.0 ใช้ GLSurfaceView ใน Java การคำนวณเสร็จสิ้นในภาษา C (โดยใช้ drand48() และเทียบเท่า C แบบอินไลน์ของอัลกอริธึม Gaussian ของ Java) บนโฟลตดั้งเดิม[] การวาดก็ทำได้ในภาษา C โดยใช้ glDrawArrays(GL_POINTS, ...) เมธอด C (NDK) ถูกเรียกทุกเฟรมจาก Java ถึง JNI
การทดสอบทั้งหมดมีค่าใช้จ่ายเท่ากันในการดำเนินการสร้างโปรไฟล์ใน Java
สถิติ:
ข้อมูล FPS เป็นเรื่องเกี่ยวกับเวลาที่เฟรมถูกโพสต์ลงบนหน้าจอจริง (ในทางเทคนิคแล้ว SurfaceFlinger)
ข้อมูลการวาดเป็นเรื่องเกี่ยวกับเวลาที่ใช้ในการออก (และ glFlush() + glFinish() ในการทดสอบ OpenGL) คำสั่งการวาด ไม่นับเวลาในการพลิกบัฟเฟอร์หน้าจอจริง
ข้อมูลพุช (VBO เท่านั้น) เป็นเวลาที่ใช้ในการพุชข้อมูลจุดยอดไปยังบัฟเฟอร์ GPU ซึ่งมักจะเป็น <.5 มิลลิวินาที (ซึ่งปัดเป็น 0.000 วินาที) ต่อเฟรม เมื่อใช้การทดสอบ OpenGL ที่ไม่ใช่ VBO เวลานี้จะรวมอยู่ในเวลาในการวาดแทน ในการใช้งานจริง อาจใช้เวลานานกว่าในการส่งข้อมูลไปยัง GPU ตัวอย่างนี้มี VBO เพียงตัวเดียว (หรืออาร์เรย์ Vertex) โดยมี 2 โฟลตต่อสไปรท์ การใช้งานจริงจะมีข้อมูลมากกว่า (เช่น ข้อมูลขนาดและพื้นผิว)
ข้อมูล Calc เป็นเรื่องเกี่ยวกับเวลาที่ใช้ในการคำนวณสีพื้นหลังของเฟรมและตำแหน่งใหม่ของแต่ละสไปรท์ เมื่อเปิดใช้งาน JIT เวลาในการคำนวณจะเทียบเคียงได้ระหว่างการทดสอบ Java (Canvas) และการทดสอบเนทิฟ (Open GL) แต่เมื่อปิดใช้งาน JIT Java จะได้รับโทษอย่างมาก
อ่านเพิ่มเติม