ย้ายบล็อกไปที่ bact.cc แล้วนะครับ

พ.ร.บ.คอมพิวเตอร์
หยุด ร่างพ.ร.บ.คอมพิวเตอร์
พื้นที่เก็บข้อมูลออนไลน์ ฟรี 2GB จาก Dropbox (sync กับ Windows, Linux, Mac, iPhone, Android ฯลฯ ได้)

2004-10-07

ขัดใจวัยรุ่น

นั่งดูเว็บเกี่ยวกะพวก Java performance tuning .. แล้วก็มีความรู้สึกขัดกันเองในหัว

คือ ถ้าอยากให้โปรแกรม เล็ก เร็ว ใช้หน่วยความจำน้อยๆ ก็มักจะต้องแลกด้วยการทำ 'ผิดหลักการเขียนโปรแกรม'

ตัวอย่างเช่น การใช้ accessor method (พวก get นู่น get นี่น่ะ) เนี่ย พอแปลงเป็น bytecode แล้ว มันซับซ้อนกว่าการประกาศตัวแปรเป็น public แล้วเรียกใช้ตรงๆ เค้าเลยแนะนำให้ประกาศเป็น public ไปเถอะ
หรือว่า การทำสืบทอดคลาสกันลงมา เพื่อจะได้ไม่ต้องเขียนโค้ดซ้ำๆ กัน กลับเป็นเรื่องที่ผู้เชี่ยวชาญเรื่อง performance tuning ไม่แนะนำ บอกว่าเขียนโค้ดซ้ำๆ กันไปเถอะ ดีกว่า .. อ้าว
ฯลฯ

อยากให้โปรแกรมมันเร็วๆ นะ แต่เขียนตามแบบนั้นแล้วมัน .. ขัดใจ -_-"

ลองทำคลาส MiniString ใช้ใน LekLekDict แทนการใช้ byte[] + คลาส ByteArray และแทน String หลายๆ ที่ -- ลดการใช้หน่วยความจำไปได้ประมาณ 9-10 KB ไม่รู้ว่าคุ้มมั๊ย เหมือนกับว่ามันกิน CPU cycle เยอะขึ้น ว่าจะลองแยกเป็น MiniString กะ MiniStringBuffer ตอนนี้มันปนๆ กันอยู่ -- method ส่วนใหญ่ ชื่อ/การใช้ เหมือนกับ String มาตรฐาน แต่ว่าเก็บข้างในเป็น byte (1 ไบต์) แทน char (2 ไบต์)
ไม่รู้ว่าทำแบบนี้ดีรึเปล่า หรือน่าจะใช้ของมาตรฐานดีกว่า? ..แต่พูดถึงข้อมูลทุกอย่างในโปรแกรม มันไบต์เดียวหมดอ่ะ

พยายามทำให้กดดูคำความหมายจากรายการคำศัพท์ (ListBox) แล้วยังกลับไปที่หน้ารายการคำศัพท์เดิมได้. ตอนนี้ทำได้แล้ว แต่ว่ามันไม่จำตำแหน่งเดิมให้ + กด back แล้วมันดันกลับไปที่หน้าความหมาย (= back วนลูป กลับไปหน้ารับอินพุตไม่ได้ .. กรรม)

เนื่องจากแก้โค้ดหลายที่ไปหน่อย ตอนนี้โปรแกรมเลยเพี้ยนๆ หน้าจอมันไม่ยอมรีเฟรช -_-" (ยังไม่ได้ลองในเครื่องจริง แต่คิดว่ามันคงเพี้ยนเหมือนกัน)

เอ่อ ..

1 comment:

Beamer User said...

ทำงานจริงได้อาจจะไม่สวย
สวยอาจจะทำงานจริงไม่ได้

พูดถึงทฤษฎี