ว่างมาก (ทำเหมือน), เมื่อคืนเลยนั่งแกะต่อ
แก้โน่นแก้นี่ ลองจัด package เปลี่ยนโค้ดเล่น ทำพังไปหลายรอบ
เป็นการรื้อฟื้น J2ME อีกครั้งนึง
ตอนแรกว่าจะลองทำ locale แบบทำให้ localize ได้ง่ายๆ จะใช้ ResourceBundle .. ปรากฏว่า java.lang ใน CLDC 1.0 มันไม่มีแฮะ -_-" (ไม่ก็ MIDP 1.0 นี่แหละ) .. ยังไม่ได้ลองว่าใน CLDC 1.1 / MIDP 2.0 มันมีรึเปล่า แต่ไม่เอาละ ไปเล่นอย่างอื่นดีกว่า
ดูๆ ByteArray อยู่ เพราะลอง profiling แล้ว พบว่าใช้คลาสนี้เยอะมาก
โดยเฉพาะเมทธอด getBytes() ซึ่งตัวนี้สร้างออบเจ็กต์ byte[] กันมหาศาลมาก
ถ้าจำไม่ผิด เฉพาะ byte[] ทั้งหมดนี่ ก็กินไป 48% ของหน่วยความจำแล้ว (คิดรวมทั้งหมด ตั้งแต่เริ่มโปรแกรม จนจบโปรแกรม โดยการทดสอบหาคำว่า "art" -- มี byte[] ทั้งหมด 16700 ออบเจ็กต์ (ไม่ใช่จำนวนออบเจ็กต์ในขณะใดขณะหนึ่งนะ เป็นจำนวนที่สร้างขึ้นมาทั้งหมด))
และประมาณ 70% ของการประมวลผลทั้งหมด จะไปตกอยู่ที่ getBytes()
โดยที่ประมาณครึ่งนึงของ 70% นั้น จะถูกเรียกจาก equals()
คิดว่าถ้าลดอะไรตรงนี้ไปได้ โปรแกรมน่าจะเร็วขึ้น
จริงๆ ตอนนี้มันก็ไม่ช้าอะไรหรอก ลองบน Sony Ericsson K700i มันก็ไม่รู้สึกว่าช้าน่ะ (คนเขียนเค้าทำมาดี ฮ่ะๆ)
แต่มันไม่มีอะไรทำน่ะ เลยเอามาดูเล่นๆ รื้อฟื้นความจำเรื่อง J2ME เฉยๆ
ใช้ NetBeans 4.0 Beta 2 คู่กับ Mobility Pack ดีทีเดียว :)
(อัดแรมไปเยอะๆ เดี๋ยวดีเอง :P -- ถ้าแรมน้อย/เครื่องช้า อย่าคิดไปลอง memory monitor เชียว มันอืดมาก ประมาณว่าปกติโปรแกรมรันความเร็วเท่าไหร่ ให้คูณ 10 เท่า จะได้ความอืดระหว่างทำการ monitor -- นี่เครื่องไม่เร็ว แต่อาศัยแรมเยอะ เลยไม่ค่อยห่วงมันแครช ช้าๆ น่ะรอได้ อย่าแครชละกัน -- แต่มันเจ๋งดีนะ มีกราฟ มีอะไรให้ดูเยอะดี)
No comments:
Post a Comment