9 เคล็ดลับ ที่ช่วยเพิ่ม Performance ให้ Java Code

28-ส.ค.-19

คัมภีร์เทพ IT

“ใคร ๆ ก็สามารถเขียน Code ให้ Computer เข้าใจได้ แต่ Programmer ที่ดี สามารถเขียน Code ให้ “คนอื่น” สามารถเข้าใจ Code เหล่านั้นได้” Martin Fowler กล่าว แต่การเขียน Code ที่มีประสิทธิภาพสูง ถือเป็นสิ่งที่ Developer ทุกคนล้วนต้องการ วันนี้เรามาดู 9 เคล็ดลับ ที่ช่วยเพิ่ม Performance ให้ Java Code ให้ทำงานได้รวดเร็วและมีประสิทธิภาพ

หมายเหตุ: JVM จะช่วย Optimize Code ให้มีประสิทธิภาพยิ่งขึ้นอยู่แล้ว ดังนั้นคุณไม่จำเป็นต้อง Optimize สำหรับ Use Cases ทั่วไป แต่ถ้าคุณต้องการเพิ่มประสิทธิภาพให้มากยิ่งขึ้นไปอีก ก็ลองดูเคล็ดลับเหล่านี้ และการทดสอบทั้งหมดในบทความนี้ก็ทำใน OpenJDK 12.0.1 บน Macbook Pro 2017 Laptop

1. Instantiate ใน Constructor

หาก Collections ของคุณถูก Initialize ค่าเพียงครั้งเดียว มันจะดีกว่าไหม ถ้าเราสามารถ Initialize ค่าใน Collection Constructor ของตัวเอง แทนที่จะต้องมาสร้าง Collection แล้วค่อยมา Set ค่าโดยใช้ addAll ภายหลัง

ลองดูข้อมูลประกอบเพิ่มเติมได้ที่ JMH benchmarks

ซึ่งหน่วยของมันก็คือ operations/second (op/s) และค่า operations/second ยิ่งมากเท่าไหร่ก็ยิ่งดี เพราะนั่นหมายถึง มันจะเร็วมากขึ้น

จากตัวอย่างนี้ จะเห็นว่าใน Constructor มี operations/second ที่มากกว่า addAll ถึง 36000 op/s

2. AddAll เร็วกว่า Add

เมื่อเทียบกันแล้ว addAll มีค่า operations/second ที่มากกว่า add ดังนั้นในครั้งต่อไป เมื่อคุณเพิ่มบางอย่างลงไปใน Array ก็ลองพิจารณาที่จะใช้ addAll ดู

จากตัวอย่างจะเห็นว่า addAll เร็วกว่าสองเท่าของ add เลยทีเดียว

3. ใช้ EntrySet ในการ Map แทนการใช้ KeySet

หากคุณต้องใช้การ Map แบบวนซ้ำ ๆ แนะนำให้คุณลองใช้ entrySet แทนการใช้ keySet

คุณจะเห็นว่า entrySet สามารถ Run ได้มากกว่า keyset ถึงประมาณ 9000 operations ใน 1 วินาที

4. ใช้ SingletonList แทนการใช้ Array ที่เก็บเพียง Element เดียว

จากตัวอย่าง แม้ทั้ง 2 แบบจะให้ผลลัพธ์ที่เหมือนกัน แต่ SingletonList จะช่วยในเรื่องประหยัดเนื้อที่ได้มากกว่า

5. ใช้ EnumSet แทน HashSet เพราะ EnumSet เร็วกว่า

คุณสามารถอ่านข้อมูลเพิ่มเติมเกี่ยวกับ EnumSet ได้ที่นี่

6. ไม่ควร Initialize Objects เพิ่มไปเรื่อย ๆ แต่พยายาม Reuse มันให้มากที่สุดเท่าที่จะทำได้

7. ใช้ String.isEmpty() method เพื่อตรวจสอบว่า String นั้น empty หรือไม่

เนื่องจาก String มีขนาดเป็น Byte[] และคุณสามารถใช้ isEmpty ในการตรวจสอบความยาวของ Array ซึ่งจะช่วยให้เร็วกว่ามาก

8. หากคุณใช้ String เป็น Character เพียงตัวเดียว ให้ใช้พวกมันด้วย Character แทน

9. ใช้ StringBuilder ได้ทุกเมื่อที่คุณต้องการ

แต่กรณีที่คุณต้องการที่จะนำอักขระมาต่อกัน (Concatenation) การใช้ + ดูจะได้ผลลัพธ์ที่เร็วกว่าการใช้ StringBuilder

หวังว่า Developer จะลองนำเคล็ดลับเหล่านี้ไปประยุกต์ใช้งานเพื่อทำให้ Java Code ของคุณทำงานได้รวดเร็วและมีประสิทธิภาพมากยิ่งขึ้น

ที่มา:  https://dev.to/

 

 

รับตำแหน่งงานไอทีใหม่ๆ ด้วยบริการ IT Job Alert

 

อัพเดทบทความจากคนวงในสายไอทีทาง LINE ก่อนใคร
อย่าลืมแอดไลน์ @techstarth เป็นเพื่อนนะคะ

เพิ่มเพื่อน

 

บทความล่าสุด