Showing posts with label Google. Show all posts
Showing posts with label Google. Show all posts

06 December 2011

"Why Android UI is so lag?" Explained.

ผมเป็นคนนึงที่รู้สึกขัดใจกับ UI (User Interface) ของ Android OS ถึงกระตุก ไม่ลื่นไหลเหมือน iOS หรือ Windows Phone ได้ถึงเพียงนี้ มันเป็นต้นเหตุของความไม่ประทับใจทั้งปวงที่ผมมีต่อมือถือ Android และผมมักจะบ่นให้เพื่อนที่ใช้ Android ฟังเสมอๆ

ในที่สุด! วันนี้ก็มีคำตอบกระจ่างชัดมาให้อ่านซักที โดยพนักงานแผนก Android 2 คน ออกมาประกาศเหตุผลว่าทำไมการใช้งานมันถึงดูไม่ลื่นไหล สบายตาเหมือนกับระบบปฏิบัติการดังตัวอื่นๆ

คนแรกคือ  อยู่ในทีมเขียน Framework ออกมาบอกรายละเอียดทางด้านเทคนิก (เทคนิกจ๋ามากๆ ถ้าไม่ได้ศึกษาด้านนี้มาระดับหนึ่งอาจจะงงได้) ผมอ่านแค่คร่าวๆ
https://plus.google.com/105051985738280261832/posts/2FXDCz8x93s

คนที่สองคือ  เป็นอดีตเด็กฝึกงาน (Intern) อยู่ในทีม Android ไม่มีลงเรื่องทางเทคนิกมาก ใครไม่ได้เรียนทางคอมฯ แนะนำให้อ่านอันนี้นะ มีอธิบายถึงทางแก้ไขด้วย
https://plus.google.com/100838276097451809262/posts/VDkV9XaJRGS

สรุปสาเหตุหลัก ได้คร่าวๆ แบ่งเป็นสี่ข้อ

  1. UI Process - ของ Android จะทำงานใน Normal Priority แถมเป็น Thread แบบปกติเทียบเท่ากับ App หรือการทำงานส่วนอื่นๆ เมื่อเปรียบเทียบกับ iOS ที่ทำงานแบบ Real-time Priority ใน UI Thread เฉพาะ ซึ่งจะทำงานได้เร็วกว่ามาก แต่เมื่อผู้ใช้ทำงานกับ UI การทำงานส่วนอื่นๆ เช่น การเรนเดอร์เว็บเพจก็จะหยุดเพื่อมาทำการเรนเดอร์ ซึ่งตรงข้ามกับ Android ที่จะทำงานหลายๆ อย่างไปพร้อมกันได้ แบบ "พอใช้" (ซึ่งก็หมายถึงกระตุกนั่นแหละ -*-)
  2. Hardware Acceleration - เมื่อก่อนสามารถเรียกให้ทำงานได้แค่ Native App UI อันนี้แก้ไขแล้วใน Android 4.0 Ice Cream Sandwich
  3. Garbage Collection (GC) - อันนี้เป็นปัญหาด้านประสิทธิภาพที่ Dalvik VM ซึ่ง Android รันอยู่ ในบางสถานการณ์ GC ก็จะทำงาน เช่นใน Photo Gallery ทำให้การแสดงผลหยุดชะงัก ทำให้ต้องจำกัดการแสดงผลไว้ที่ 30fps จาก 60fps
  4. UI Views - Android จะต้องโหลด UI View ใหม่ทุกครั้งที่ทำการเรียกใช้ ตรงข้ามกับ iOS ที่เก็บทุก views ไว้ในหน่วยความจำตั้งแต่แรก (อันนี้เข้าใจว่าเป็นผลมาจากประสิทธิภาพการจัดการหน่วยความจำของ byte code ของ Android ที่ไม่ดีเท่ากับ native code ของ iOS, WP และอื่นๆ)
โชคดีที่สามข้อหลังสามารถแก้ไขได้ หรือมีวิธีอ้อมที่พอจะบรรเทาได้ แต่มันก็ไม่มีทางที่จะทำให้ UI ใช้งานได้ไหลลื่นเท่า iOS/WP เพราะตัว UI ของ Android ถูกเขียนขึ้นมาเพื่อแข่งกับ BB ก่อน แต่พอ iPhone เปิดตัวมา ทำให้ต้องใส่ Touch UI เพิ่มเข้าไป โดยที่ไม่ได้เขียนขึ้นมาใหม่ ทำให้การใช้งานมีปัญหาอย่างที่เห็นกัน

ทางเดียวที่จะแก้ไขอาการนี้ได้แบบถาวรคือการรื้อ code ส่วน UI ออกมาเขียนใหม่ทั้งหมด ซึ่งจะเกิดปัญหาตามมาหลายอย่าง 

การพัฒนาส่วนอื่นๆ ต้องหยุดชะงัก, ต้องสร้าง compatibility mode ขึ้นมาสนับสนุน App เก่าทั้งหมด และนักพัฒนาต้องเขียน App ตัวเองใหม่เพื่อใช้งาน UI ใหม่

ยังไงก็ตาม ผมเชื่อว่าการแก้ปัญหานี้ ไม่ว่าจะใช้เวลานานแค่ไหน แต่สุดท้ายแล้วจะทำให้ผมมอง Android ในแง่บวกอีกครั้ง

แถมรีวิว Android 4.0 ICS รุ่นล่าสุดมาให้ดูด้วย เผื่อสงสัยว่าดีขึ้นขนาดไหนแล้ว

เทียบกับ Android 1.5 Cupcake


ปล. สเปกของสองเครื่องต่างกันเยอะมากๆๆๆ (Samsung Galaxy Nexus กับ HTC Magic) อาจจะเปรียบเทียบได้ไม่ดีเท่าไหร่ แต่เอาให้เห็นคร่าวๆ ว่า hardware ต่างกันขนาดนี้ กระตุกต่างกันแค่ไหน


28 December 2009

วิธีแก้ Google Calendar Sync ให้ใช้ได้กับ Outlook 2010

screenshot_02

ปกติแล้วผมจะใช้มือถือในการจดบันทึกนัดหมายต่างๆ เรียกว่าตารางงานทั้งหมดฝากไว้กับมือถือ ดังนั้นผมจึงไม่อยากให้ตารางนัดหมายเหล่านี้หายไป ผมจึงใช้ Google Calendar Sync ซึ่งจะทำการ Sync ข้อมูลระหว่างปฏิทินใน Outlook (ที่ sync กับมือถือผมผ่าน PC Suite ของ Nokia อีกที) กับ Google Calendar

พอผมลองใช้ Microsoft Office 2010 Beta ปัญหามันเกิดขึ้นทันทีเลย เพราะ GCS มันบอกว่า Outlook ใหม่เกิน - -“ เอาล่ะสิ เมื่อมีปัญหาก็ต้องมีวิธีแก้ครับ วันนี้มีเวลาว่างเลยลองหาดู ก็เจอเลยครับ แต่ว่าออกจะยุ่งยากเล็กน้อย ตามนี้เลย

1. ต้องแบ็กอัพไฟล์ OUTLOOK.exe ก่อนครับ อยู่ใน c:\Program Files\Microsoft Office\Office14 (หรือใน Program Files (x86) สำหรับระบบปฏิบัติการ 64-bit

2. ปิดโปรแกรม Outlook ให้เรียบร้อย ตรวจดูให้เรียบร้อยใน Task Manager ด้วย

3. เปิดไฟล์ OUTLOOK.exe ด้วย Hex Editor (ผมใช้ HxD)

4. หาบรรทัด ที่มี 14.0.0 ให้แก้เป็น 12.0.0 (อาจจะหายากนิดนึง)

screenshot_01

5. เซฟไฟล์ ถ้าใช้ HxD จะเซฟให้ทุกครั้งที่เราแก้ไขไฟล์ เพราะฉะนั้นเวลาแก้ก็ต้องระวัง ไม่งั้นจะบึ้มเอาได้ง่ายๆ

6. ลองเปิด Outlook แล้วลองดูว่ายังใช้ได้ดีอยู่รึเปล่า?

7. เปิด Google Calendar Sync แล้วจะพบว่ามัน Sync ได้แล้ว! เยี่ยมเลย

ลองทำดูครับ

Credit Venukb