Tags:
Android

Dianne Hackborn วิศวกรของทีม Android ออกมาอธิบายหลักการและแก้ความเข้าใจผิดเกี่ยวกับการประมวลผลกราฟิกของ Android หลายประการ

ประเด็นเรื่อง hardware acceleration ใน Android แต่ละรุ่น

  • Android มี hardware acceleration มาตั้งแต่รุ่น 1.0 โดยส่วนที่ใช้งานคือการเรนเดอร์ตัวกรอบหน้าต่าง (window compositing) ดังนั้นแอนิเมชันต่างๆ ที่เราเห็นในเมนูหรือชิ้นส่วน UI ต่างๆ เรนเดอร์ด้วยฮาร์ดแวร์ทั้งนั้น
  • แต่เนื้อในของหน้าต่างหรือ content ภายในแอพ จะใช้ซอฟต์แวร์ประมวลผลแทน ซึ่งประสิทธิภาพของการประมวลผลจะขึ้นกับพลังของฮาร์ดแวร์และจำนวนพิกเซลที่ใช้งาน เช่น Droid ตัวแรกจะมีปัญหากับความละเอียด 800x480 ในขณะที่ Nexus S ทำได้สบาย
  • การประมวลผลเนื้อหาโดยใช้ hardware acceleration ถูกเพิ่มเข้ามาใน Android 3.0 แต่ปิดเอาไว้ไม่ใช้งาน เว้นเสียแต่ว่านักพัฒนาแอพจะระบุให้ใช้ GPU ช่วยประมวลผลเท่านั้น
  • Android 4.0 ใช้เอนจิน hardware acceleration ตัวเดียวกับ 3.0 แต่เปิดมาแต่แรก และถ้าแอพระบุว่าตัวมันเองทำงานบน Android 4.0 ได้ ตัวระบบปฏิบัติการก็จะเรียกใช้ hardware acceleration ทั้งหมด

ประเด็นเรื่องความช้า-เร็วของการแสดงผลใน Android

  • hardware acceleration ไม่ได้มีแต่ข้อดีเสมอไป เพราะโพรเซสของแอพจะต้องเปลืองแรมอีก 8MB ต่อโพรเซสสำหรับเรียกใช้ OpenGL ดังนั้นงานบางงานในตัวระบบปฏิบัติการ Android 4.0 จึงเลือกจะไม่ใช่ hardware acceleration เพื่อประหยัดแรม โดยเฉพาะงานที่เพียงซีพียูลำพังสามารถทำได้ดีอยู่แล้ว (เช่น ไม่ควรจะเรนเดอร์ status bar ด้วย OpenGL เพราะไม่คุ้ม)
  • hardware acceleration ไม่ใช่ "คำตอบสุดท้าย" ที่ทำให้ Android ลื่นขึ้น เพราะยังมีประเด็นด้านเทคนิคอื่นๆ อีกมาก เช่น การปรับปรุงประสิทธิภาพของ scheduler ระหว่างเธร็ดที่ทำงานเบื้องหน้าและเบื้องหลัง (อยู่ใน 1.6) หรือการปรับปรุงระบบการป้อนข้อมูล (อยู่ใน 2.3) การปรับปรุง garbage collector เป็นต้น
  • บางครั้ง hardware acceleration กลับทำให้การแสดงผลช้าลงด้วยซ้ำ โดยยกกรณีทีมงานของกูเกิลเคยพบว่าเลื่อนหน้าจอบน Nexus S/ICS ช้ากว่า Gingerbread ในบางกรณี ซึ่งค้นพบว่าเป็นปัญหาของ timing ของการประมวลผล ถึงแม้สมรรถนะในการประมวลผลจะสามารถวาดหน้าจอที่ 60 fps ได้ก็ตาม ก็ยังกระตุกเพราะเรื่องอื่น
  • เวลาคนเปรียบเทียบการเลื่อนหน้าจอใน Android และ iOS เหตุผลส่วนมากที่ Android ช้ากว่าไม่ได้เป็นเพราะไม่มี hardware acceleration แต่เป็นเพราะวิธีการเรนเดอร์เว็บเพจของ Android ในอดีต มองว่ามันเป็น list ที่ต้องค่อยๆ วาดบนหน้าจอไปตามลำดับ ทำให้การเลื่อนหรือซูมมีปัญหากับส่วนที่ยังไม่ได้วาดบนจอ แต่ใน Android 3.0 เปลี่ยนมาเรนเดอร์แบบ tiles ที่แก้ปัญหาเรื่องนี้ได้
  • hardware acceleration ไม่ช่วยแก้ปัญหาเรื่องประสิทธิภาพของกราฟิกทั้งหมด เพราะ GPU ก็มีข้อจำกัดทางสมรรถนะอยู่ ตัวอย่างเช่น Tegra 2 สามารถเรนเดอร์พิกเซลได้สูงสุด 2.5 เท่าของความละเอียด 1280x800 ที่ 60fps ซึ่งในความเป็นจริงแล้ว การแสดงผลกราฟิกไม่ได้วาดแค่ 1280x800 แต่ต้องวาดวัตถุต่างๆ บนหน้าจอซ้อนกันหลายๆ ชั้นแล้วค่อยนำมาประกอบเข้าด้วยกัน (compositing) ซึ่งลำพังแค่นี้ก็ใช้พิกเซลครบโควต้าของ GPU แล้ว
  • Android 3.0 ใช้เทคนิคหลายอย่างช่วยให้พลังของ GPU พอใช้สำหรับการแสดงกราฟิก เช่น การวาดหน้าต่างเฉพาะส่วนที่ไม่บังกัน (overlay) จะได้ไม่ต้องเรนเดอร์ภาพของหน้าต่างทั้งหมด, วาดภาพพื้นหลังเก็บไว้ในหน่วยความจำ เวลาเลื่อนจอก็เลื่อนภาพตาม จะได้ไม่ต้องวาดใหม่ทุกครั้งที่เลื่อน เป็นต้น
  • ยิ่งความละเอียดของหน้าจอเพิ่มขึ้น การแสดงผลหน้าจอที่ 60 fps จะยิ่งขึ้นกับพลังของ GPU และแบนด์วิธหน่วยความจำของ GPU ซึ่งเธอแนะนำว่านักพัฒนาควรใส่ใจกับแบนด์วิธตรงนี้ให้มาก ถ้าแอพที่ทำอยู่เกี่ยวข้องกับกราฟิก

รายละเอียดแบบเต็มๆ แนะนำให้อ่านต้นฉบับครับ

ที่มา - +Dianne Hackborn via The Verge

Comments

By: sachikogear
iPhoneWindows PhoneAndroidSymbian
sachikogear's blog
on 06/12/11 21:08 #361103 toggle
sachikogear's picture

เพราซอฟแวร์ ไม่ได้เกิดมาเพื่อฮาร์ดแวร์ มันร้อยพ่อพันแม่เกินไป ใครจะเขียนโปรแกรมครอบคลุมไหว iOS ทดสอบกับฮาร์ดแวรไม่กี่รุ่น ถูกเขียนขึ้นมาโดยเฉพาะ เกิดมาเป็นคู่กันและกัน Perfect match

By: MrWhisper
ContributorWindows PhoneBlackberrySymbian
MrWhisper's blog
on 06/12/11 21:14 #361104 Reply to:361103 toggle
MrWhisper's picture

ผมว่า Windows Phone ก็หลายพ่อหลายแม่นะ? (แต่ก็ไม่เท่าแอนดรอยด์)


[ JIRAYU.IN.TH ]

By: the mee
iPhone
the mee's blog
on 06/12/11 21:32 #361115 Reply to:361104 toggle
the mee's picture

Windows Phone กำหนด สเปกและ อุปกรณ์ซะ ขนาดนนั้นไม่ลื่นก็ไม่รู้ว่าไงแล้ว ครับ แทบจะไม่ได้ต่างกะ iOS เลย


themee

By: salapao
iPhoneWindows PhoneUbuntu
salapao's blog
on 06/12/11 21:56 #361134 Reply to:361115 toggle
salapao's picture

กำหนด สเปก หรือ ผมว่า สเปก ของเครื่อง แอนดรอย ยังแรงกว่าของ วินโดว์โฟน อีก


If tomorrow never come.

By: Slimy
AndroidUbuntu
Slimy's blog
on 07/12/11 8:14 #361318 Reply to:361134 toggle
Slimy's picture

Android ไม่เคยกำหนดขั้นต่ำสเปคนิครับ

By: bukindepsbbl
Windows Phone
bukindepsbbl's blog
on 07/12/11 12:51 #361438 Reply to:361318 toggle
bukindepsbbl's picture

ผมว่า HD7 ลื่นกว่า S2

By: MrWhisper
ContributorWindows PhoneBlackberrySymbian
MrWhisper's blog
on 07/12/11 13:24 #361453 Reply to:361318 toggle
MrWhisper's picture

รู้สึกจะมีกำหนดนะครับ แต่ไม่ทำตามก็ได้ แค่ไม่ได้แอพของกูเกิลไปใส่

แล้วก็เท่าที่ทราบ หลายเสียงบอกว่าขั้นต่ำของ WP7 ก็ทำงานได้ลื่นกว่าขั้นสูงของแอนดรอยด์นะ (ผมยังไม่มีโอกาสสอยมาใช้จริง แต่จากที่เล่น สเป็คระดับเดียวกับ WP7 ลื่นกว่า)


[ JIRAYU.IN.TH ]

By: Slimy
AndroidUbuntu
Slimy's blog
on 07/12/11 15:51 #361519 Reply to:361453 toggle
Slimy's picture

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

By: MrWhisper
ContributorWindows PhoneBlackberrySymbian
MrWhisper's blog
on 07/12/11 16:19 #361544 Reply to:361519 toggle
MrWhisper's picture

ผมจำได้ว่ามีกำหนดอะไรสักอย่างครับ เพื่อให้ได้เอาแอพของกูเกิลไปใส่ ไม่ใช่กำหนดว่าต้องสเป็คขั้นต่ำเท่านี้ ถึงจะรันแอนดรอยด์ได้


[ JIRAYU.IN.TH ]

By: kobellza
Android
kobellza's blog
on 06/12/11 21:16 #361105 Reply to:361103 toggle
kobellza's picture

มันเป็นแบบนี้เองหรอครับ อืมๆๆ.

By: panitw
Android
panitw's blog
on 06/12/11 21:49 #361130 Reply to:361103 toggle
panitw's picture

ผมว่าข้ออ้างครับ ปัญหานี้มันเป็นระดับ Architecture ของ OS เป็นหลัก ไอ้ Hardware ร้อยพ่อพันแม่มันเป็นเรื่องรองๆๆๆมาก

จากที่ยกมาด้านบน Android เป็น Multitask 100% การที่จะเปิด HW Acceleration สำหรับทุก Process ต้องเสีย 8MB แต่ละ Process ซึ่งเปลือง RAM มาก และ OS ก็ไม่รู้ (อาจจะรู้แต่จัดการไม่ดี) ว่า App ไหนควรจะ Focus เทียบกับ iOS ที่เป็น Multitask เฉพาะ App ของระบบ ทำให้ CPU/GPU ได้ Focus กับ Process ของ App ที่กำลัง Run อยู่ได้เต็มที่ แต่ก็ต้องแลกมาด้วยสิ่งที่ User รำคาญในช่วงแรกๆคือเปิดโปรแกรมอื่นแล้วพอย้อนกลับมาใช้โปรแกรมที่แล้วต้องโหลดใหม่หมด ซึ่ง Apple ก็แก้เกมด้วยระบบ Multitask เทียม โดยใช้หลักการของ Process Hibernation แทน ซึ่งก็ช่วยให้ประสบการณ์ของ User ดีขึ้นมาก สามารถสลับ Process ได้ แต่ยังมีข้อดีของ Single Task อยู่

By: panitw
Android
panitw's blog
on 06/12/11 22:00 #361132 Reply to:361130 toggle
panitw's picture

บทความอธิบายง่ายๆเรื่อง Multitask ของ iOS กับ Andriod

http://bit.ly/9CGSkq

By: Fasndee
ContributorAndroid
Fasndee's blog
on 07/12/11 0:52 #361236 Reply to:361130 toggle
Fasndee's picture

คิดว่าส่วนอื่นก็คงจะเกี่ยว และอาจจะเป็นข้องอ้างจริง ๆ เหมือนกัน แต่ผมเคยมีประสบการณ์กับ PC ถึงจะไม่ใช่มือถือ แต่ก็มีประเด็นที่น่าสนใจว่า

เครื่องที่ผมประกอบเองนั้น มีอุปกรณ์ราคาแพง รุ่นสูงกว่าอีกเครื่องที่เป็นยี่ห้อ Dell ของอีกหน่วยงานหนึ่ง แต่แปลกที่ว่า โปรแกรมบางตัวนั้น ความลื่น ความคล่องตัวของเครื่อง Dell นั้น รู้สึกได้เลยครับ ผมคิดว่า hardware ที่ผ่านการทดสอบว่าเหมาะสม เข้ากันได้อย่างดี กับ software ที่ออกแบบให้เหมาะกับ hardware ที่กำหนดมานั้นช่วยตรงจุดนี้ได้ไม่แพงเครื่องแรง ๆ เลยละครับ


http://fullexp.com

By: i_heatie
AndroidWindows
i_heatie's blog
on 06/12/11 21:21 #361107 toggle
i_heatie's picture

เดี๋ยวจะมี blogger เก๋ ๆ คนนึงออกมาบอกว่า ผมไม่สน ผมใช้อย่างเดียว ผมจะสนทำไม สนแค่มันไม่ลื่น


God's believed in many names.

By: WWII
iPhoneAndroid
WWII's blog
on 06/12/11 22:02 #361139 Reply to:361107 toggle
WWII's picture

มีผู้บริโภคกากๆ มาทำหน้าที่แทนแล้วด้านล่าง :P

By: sachikogear
iPhoneWindows PhoneAndroidSymbian
sachikogear's blog
on 06/12/11 22:25 #361154 Reply to:361139 toggle
sachikogear's picture

ต่อกันเลยทีเดียว ประโยคเดียวกันเปะๆ 55+

By: nidlittle
iPhoneWindows
nidlittle's blog
on 06/12/11 21:26 #361108 toggle
nidlittle's picture

ผมไม่สน ผมใช้อย่างเดียว ผมจะสนทำไม สนแค่มันไม่ลื่น

จากผู้บริโภคกากๆจนๆที่อยากใช้เงินให้คุ้มค่าที่สุดคนนึง

By: sathdr
iPhoneAndroidSymbian
sathdr's blog
on 06/12/11 21:27 #361109 toggle
sathdr's picture

ถ้าเป็น Steve Jobs แกคงบอกว่าไม่ต้องมาอธิบาย ไปทำมาใหม่ให้ลื่นๆซะ

By: darkleonic
Android
darkleonic's blog
on 06/12/11 21:28 #361110 Reply to:361109 toggle
darkleonic's picture

+1 เลยทีเดียว

ไปทำใหม่ซะครับ ไม่ใช่ให้ยอมรับสภาพแบบนี้ ไอ้เทคนิคหลายๆ ตัวผมก็เห็นบน DirectX เป็นชาติเศษแล้ว การเอามาอยู่บน Linux มันท้าทายขนาดนั้นเลยสินะ

By: tstcnr1u
iPhoneWindows PhoneAndroidUbuntu
tstcnr1u's blog
on 06/12/11 23:14 #361182 Reply to:361110 toggle
tstcnr1u's picture

Linux UI มันช้าตั้งแต่โครงสร้างข้างล่างละ ถึง Mac ดูเหมือนจะมาคล้ายๆกันแต่โครงสร้าง OS ที่จะรองรับ UI มันต่างกันลิบลับเลย


บริการ VPS คุณภาพ

By: darkleonic
Android
darkleonic's blog
on 06/12/11 23:20 #361188 Reply to:361182 toggle
darkleonic's picture

Mac กับ Linux มีบรรพบุรุษร่วมกันครับ ประดุจคนกับลิง

By: TeamKiller
ContributorWindows PhoneWindows
TeamKiller's blog
on 06/12/11 23:35 #361192 Reply to:361188 toggle
TeamKiller's picture

OS ไหนเป็นลิง เป็นคนหว่า

By: cwt
iPhoneAndroidRed Hat
cwt's blog
on 06/12/11 23:46 #361201 Reply to:361188 toggle
cwt's picture

Mac กับ Linux ไม่ได้มีบรรพบุรุษร่วมกันเลยแอ้แต่นิดเดียวครับ Mac สืบสายตระกูลมาจาก UNIX ส่วน Linux ไม่ได้เอา code ใดๆ ในส่วนของ kernel มาจาก UNIX เลย

By: darkleonic
Android
darkleonic's blog
on 07/12/11 10:10 #361372 Reply to:361201 toggle
darkleonic's picture

สงสัยผมจะใช้คำผิดจริงๆ

Linux = UNIX ของ Linus

แล้วผมต้องใช้คำยังไงดี?

By: pexza
AndroidUbuntuWindows
pexza's blog
on 07/12/11 1:36 #361258 Reply to:361188 toggle
pexza's picture

ไม่เชิงนะครับ Linux เลียนแบบ Unix แต่ Mac OS X พัฒนามาจาก UNIX ตระกูล BSD


pex.im | pex.in.th | @pexfresh

By: amdo
iPhoneAndroidBlackberry
amdo's blog
on 06/12/11 21:31 #361114 Reply to:361109 toggle
amdo's picture

+1


=="

By: sunback
ContributorAndroidUbuntuWindows
sunback's blog
on 06/12/11 21:32 #361116 Reply to:361109 toggle
sunback's picture

ถ้าจำเรื่องเสาอากาศกันได้ จะจำได้ว่าค่ายผลไม้เคยออกมาอธิบายยกใหญ่เหมือนกัน ;P


[ kantiya.com ]

By: WWII
iPhoneAndroid
WWII's blog
on 06/12/11 21:59 #361137 Reply to:361116 toggle
WWII's picture

เพราะปัญหานั้นแก้ไม่ได้แล้ว ผลิตออกไปแล้ว เลยต้องแถกันหน่อย เอ๊ะ! หรือว่าปัญหาไม่ลื่นของ Android จะแก้ทาง software ไม่ได้แล้วเหมือนกัน :P

By: Golffy
ContributoriPhoneBlackberryIn Love
Golffy's blog
on 06/12/11 22:04 #361140 Reply to:361137 toggle
Golffy's picture

แก้ได้ แต่ไม่ได้เรียกคืนแล้วผลิตใหม่ให้ขาดทุนย่อยยับ เพราะตอนนั้นก็ยังขายได้ขายดีอยู่

ส่วนตัวที่แก้เรื่องเสาเสร็จแล้ว ก็ชุบตัวอัพสเปคใหม่เป็น 4S ชะละล่า (และขายดีตามเคย)


@mamuang mng.name

By: Go-Kung
Android
Go-Kung's blog
on 06/12/11 22:32 #361158 Reply to:361137 toggle
Go-Kung's picture

แก้ได้แต่คงต้องรื้อใหม่ตั้งแต่ kernel กันเลย

google คงไม่เลือกทำวิธีนี้แน่ๆ เพราะเท่ากับรีเซ็ท Android กลับไปที่ 1.0 ใหม่อีกรอบ

แอพต่างๆก็ต้องมาลุ้นว่าจะใช้ได้ไม่ได้ทุกตัว เสียความเชื่อมั่นลูกค้าไปเยอะ

By: mk
FounderAndroidRed HatWindows
mk's blog
on 07/12/11 12:41 #361429 Reply to:361158 toggle
mk's picture

พวก ROM cooker นี่เค้าเปลี่ยนเคอร์เนลกันเป็นว่าเล่นเลยนะครับ


my disclaimer

By: xxxooo
Windows PhoneWindowsIn Love
xxxooo's blog
on 08/12/11 0:22 #361782 Reply to:361158 toggle
xxxooo's picture

ผมว่า ถ้ามีจังหว่ะ ยังไง Google ก็คงต้องทำ

เหมือนที่ MS เลือกที่จะกลบฝัง Windows Mobile

แม้จะเสียความเชื่อมั่น แต่เพื่อสิ่งที่ดีกว่า

ไม่งั้นในอนาคต Android ก็อาจตายไปเองก็ได้

กองทัพมดกับยักษ์พิการ อาจค่อยๆ โดน 2 ยักษ์ กระทืบตาย


"My hardware, my rules. I brought back what you took away." by OtherOS++ Project Team

By: salapao
iPhoneWindows PhoneUbuntu
salapao's blog
on 06/12/11 22:04 #361141 Reply to:361116 toggle
salapao's picture

แต่เขาก็ไปทำใหม่แล้วนะ


If tomorrow never come.

By: KenDeb
ContributoriPhoneAndroidUbuntu
KenDeb's blog
on 07/12/11 13:28 #361454 Reply to:361109 toggle
KenDeb's picture

อย่าขี้เกียจ กลับไปแก้ไขให้มันดีซะ +222

By: tirakarn
Android
tirakarn's blog
on 06/12/11 21:31 #361112 toggle
tirakarn's picture

เคยสงสัยอยู่เหมือนกันว่า hardware แรงๆระดับเทพ ทำไมบางทีมันกระตุก


blog ส่วนตัว

By: mednoon
mednoon's blog
on 06/12/11 21:35 #361118 toggle
mednoon's picture

แก้ algorithm ล้วนๆครับ

By: UltimaWeapon
AndroidUbuntuWindows
UltimaWeapon's blog
on 06/12/11 21:36 #361119 toggle
UltimaWeapon's picture

อีกหนึ่งเหตุผลคือ "เพราะมันไม่ใช่ Native แบบ iOS"


My Facebook My Blog

By: GooEng
ContributorWindows PhoneAndroidUbuntu
GooEng's blog
on 06/12/11 22:49 #361167 Reply to:361119 toggle
GooEng's picture

อีก 1 เหตุผล เพราะมันเป็น Java


คำตอบของข้า คือ ประกาศิต

By: PaPaSEK
ContributorAndroidWindowsIn Love
PaPaSEK's blog
on 06/12/11 22:59 #361177 Reply to:361167 toggle
PaPaSEK's picture

บังอาจ!! จาวาเร็วส์!!!

By: Thaina
Windows
Thaina's blog
on 06/12/11 23:07 #361180 Reply to:361177 toggle
Thaina's picture

+666


My Blog

By: cloverink
iPhoneAndroidUbuntu
cloverink's blog
on 07/12/11 2:16 #361270 Reply to:361177 toggle
cloverink's picture

เย่~


i = NulL

By: Pinery
ContributoriPhoneAndroid
Pinery's blog
on 07/12/11 9:18 #361339 Reply to:361177 toggle
Pinery's picture

555+

By: rromk
AndroidUbuntu
rromk's blog
on 07/12/11 0:31 #361224 Reply to:361167 toggle
rromk's picture

dalvik != jvm เน้อ

By: Thaina
Windows
Thaina's blog
on 07/12/11 0:40 #361228 Reply to:361224 toggle
Thaina's picture

ภาษาฐานเดียวกัน ไม่มี struct ไม่มี pointer เป็น Virtual Machine อวดฉลาดเหมือนๆกัน จะให้รอดเรื่อง Performance คงยากครับ

ป.ล. Virtual Machine อวดฉลาด หมายถึงพวก Virtual Machine ที่พยายามช่วยคอมไพล์ให้คนเขียนไปซะทุกอย่าง พยายามไม่ให้คนเขียนคิดเองเลือกเอง แล้วชอบมาโม้ว่าฉลาดมากพอที่จะ Optimize ให้ แล้วปรากฏว่าไม่สามารถทำได้จริง ตัวอย่างเช่น JVM และเหล่า JavaScript Compiler ทั้งหลาย ต่างกับ Virtual Machine ที่ยอมรับความโง่ และเลือกที่จะมีเครื่องมือ Option ให้คนเขียนเลือกใช้ แลกกับความยุ่งยากเล็กน้อย


My Blog

By: rromk
AndroidUbuntu
rromk's blog
on 07/12/11 1:42 #361261 Reply to:361228 toggle
rromk's picture

กำลังจะสื่อะไรอ่ะครับ งง... ไม่มี struct (แปลว่าอะไร?) ไม่มี pointer มันทำให้ช้าเหรอครับ?

virtual machine มันไม่เกี่ยวกับภาษานะครับ โดยหลักการแล้วคุณจะเขียนโปรแกรมเป็นภาษาอะไรก็ได้ ขอแค่ให้ compile มาเป็น bytecode ของ virtual machine นั้นเท่านั้น ใน android คุณสามารถเขียนโปรแกรมด้วยภาษา java แต่ก่อนจะออกมาเป็น app ที่รันได้บน android มันจะต้องผ่านการแปลงจาก

java -> java bytecode -> dalvik bytecode

การที่มันจะเร็วช้าอยู่ที่ virtual machine มัน "ฉลาด" แค่ไหนและเท่าที่ผมติดตามมา dalvik มันก็เพิ่มความฉลาดมาเรื่อยๆนะครับ แต่ถ้าจะบอกว่ามัน "อวดฉลาด" ผมก็ไม่เห็นด้วย ผมเห็นว่าการ optimize ต่างๆในตัว virtual machine มันเป็นวิธีที่ช่วยทำให้โค้ดที่เขียนขึ้นมารันบนตัวมันทำงานได้เร็วขึ้น แต่มันคงจะไม่สามารถเร็วได้เท่า native ในทุกกรณี และขณะเดียวกันมันก็ไม่ได้ช้ากว่า native ทุกกรณีเช่นกัน

ช่วยยกตัวอย่าง virtual machine ที่ "ยอมรับความโง่" ให้ดูซักตัวสิครับ

By: UltimaWeapon
AndroidUbuntuWindows
UltimaWeapon's blog
on 07/12/11 1:53 #361266 Reply to:361261 toggle
UltimaWeapon's picture

"และขณะเดียวกันมันก็ไม่ได้ช้ากว่า native ทุกกรณีเช่นกัน"

แค่เริ่มต้นก็ช้ากว่าละคับ เสียเวลาคอมไพล์เป็น Machine Code อีก ไหนจะเรื่องโครงสร้างของภาษาที่ไม่เอื้อต่อการแปลงเป็น Machine Code อีก ไหนจะใช้แรมมากกว่าอีก ไหนจะระบบ Garbage Collection อีก ฯลฯ ไม่มีอะไรเร็วกว่าสักอย่าง มีดีแค่เขียนง่าย พัฒนาเร็ว รันได้หลาย Architecture


My Facebook My Blog

By: rromk
AndroidUbuntu
rromk's blog
on 07/12/11 4:54 #361289 Reply to:361266 toggle
rromk's picture

เอามาจากไหนครับว่าโครงสร้างของภาษาไม่เอื้อต่อการแปลงเป็น machine code? virtual machine มันเกี่ยวอะไรกันกับโครงสร้างภาษา? ในเมื่อ virtual machine มันสนใจแต่ bytecode

แล้วอีกอย่างเขียนโปรแกรมบนไหนครับที่มันไม่ต้อง compile? ถ้าพูดถึง JIT มันไม่ได้ compile ทั้งโปรแกรมใหม่นะครับ มัน compile เฉพาะส่วนที่รันบ่อยๆเท่านั้น ส่วนที่เหลือก็เป็น interpreter ตามปกติ ซึ่งก็อย่างที่ผมบอกไว้ มันไม่ได้เร็วขึ้นทั้งหมด แต่ก็ไม่ได้ช้ากว่าไปซะหมดครับ

และอีกอย่างนึง ถึงแม้ว่า app จะเขียนให้รันบน virtual machine แต่ api call ส่วนใหญ่แล้วจะลงท้ายด้วยการรัน native code ใน library ต่างๆทั้งนั้นแหละครับ

แนะนำให้ดู Google I/O 2010 - A JIT Compiler for Android's Dalvik VM ครับ ถ้าสนใจเรื่อง JIT ของ dalvik

By: UltimaWeapon
AndroidUbuntuWindows
UltimaWeapon's blog
on 07/12/11 11:15 #361401 Reply to:361289 toggle
UltimaWeapon's picture

เพราะมันมีฟีเจอร์หลายอย่างเกินไปนั่นละคับ ถึงไม่เอื้อต่อการแปลงเป็น Machine Code ถ้าคุณจะตอบว่า มันก็แปลงเป็น Machine Code ได้เหมือนกัน ได้ Code ออกมาเหมือนพวกภาษา Native อยู่ดี แล้วส่วนที่มันเป็นฟีเจอร์ของภาษาที่เพิ่มขึ้นมาละคับ? มันไม่ต้องใช้งาน CPU เลยหรือ? ยกตัวอย่างเช่น Garbage Collection คุณคิดว่า CPU ไม่ต้องมาประมวลผลตรงนี้เลยงั้นเหรอ? สรุปง่ายๆคือมันมี Overhead เพิ่มขึ้นมานั่นละคับ

ดูเหมือนคุณจะเข้าใจอะไรผิดเรื่องการคอมไพล์ไปละ เอาเป็นว่า C ก็คอมไพล์เหมือนกัน แต่มันออกมาเป็น Native Code เลย การทำงานทุกอย่างควบคุมได้ด้วยตัวโปรแกรมเมอร์เอง อยากจะจอง Memory ตอนไหนก็เลือกได้ อยากจะ Free Memory ตอนไหนก็เลือกได้ ฯลฯ

ลงท้ายด้วยการรัน Native Code นั่นมันใช่คับ แต่พวก Code ที่ทำงานก่อนที่จะถูกเรียกมาใน Native API ละ?


My Facebook My Blog

By: rromk
AndroidUbuntu
rromk's blog
on 07/12/11 16:03 #361531 Reply to:361401 toggle
rromk's picture

ถ้าคุณมองในแง่ที่ว่า "การแปลงเป็น machine code" คือการแปลงทั้งโปรแกรมเป็น native code อันนี้ผมก็จะเห็นด้วยว่ามันไม่เอื้อ เพราะว่าตัว bytecode มันถูกออกแบบมาให้รันบน virtual machine ไม่ใช่ native CPU อยู่แล้ว แต่ก็อย่างที่ผมบอกไป การทำ JIT มันไม่ได้คอมไพล์ bytecode -> native code หมดทั้งโปรแกรม ถ้าเจาะจงมาที่ JIT ของ dalvik มันจะคอมไพล์เฉพาะโค้ดตรงส่วนที่มีการรันบ่อยๆ เท่านั้น ซึ่งถ้าดูจากตัวเลขที่ google ให้มา (ดูตามลิ้งค์ google IO ที่ผมแปะไว้ข้างบน) มันอยู่ที่ระหว่าง 2 - 10% ของ bytecode ทั้งหมดเท่านั้น ซึ่ง bytecode ที่ถูก JIT แปลงเป็น optimized native code แล้วก็จะถูกเก็บไว้ใน translation cache และถูกเรียกใช้โดยตรงเลยถ้ามีการเรียกใช้โค้ดส่วนนั้นซ้ำอีก

แน่นอนว่าส่วนที่เป็นฟีเจอร์ต่างๆของ virtual machine ไม่ว่าจะเป็๋น GC, exception handling, object reference counter, etc มันกิน CPU และก็เป็น overhead สำคัญที่อาจเป็นจุดที่ทำให้เกิดการกระตุกได้ แต่มันก็ได้ถูกพัฒนาให้ overhead ตรงส่วนนี้ลดลงอยู่ตลอดเวลาเช่นกัน

การเขียนโปรแกรมด้วย C ทำให้คุณสามารถควบคุมการรทำงานของโปรแกรมได้มากกว่าการใช้ภาษาที่รันบน virtual machine ก็จริง แต่ปกติแล้วคุณก็ไม่ได้ควบคุมมันทั้งหมดหรอก ยกตัวอย่างการ allocate memory ด้วย malloc/free คุณคงไม่ได้เขียน library เพื่อทำการ allocate/free เองใช่ไหม? คุณต้องเรียกผ่าน standard library แล้วทีนี้คุณควบคุมได้ไหมว่าจะให้มัน allocate memory ส่วนไหนมาให้? คุณป้องกันการเกิด memory fragmentation ได้ไหม?

ที่ผมพูดมาเพียงเพื่อจะบอกว่า การมี overhead มันไม่ได้ทำให้ระบบ "แย่ลง" เสมอไปครับ มันอยู่ทีการ compromise กันระหว่าง manageability กับ stability และ speed ครับ

By: Thaina
Windows
Thaina's blog
on 07/12/11 5:24 #361292 Reply to:361261 toggle
Thaina's picture

การที่มันจะเร็วช้าอยู่ที่ virtual machine มัน "ฉลาด" แค่ไหน

นั่นแหละครับประเด็นที่ผมบอกว่า ทั้ง Java และ DALVIK มันคือ "Virtual Machine ที่อวดฉลาด"

การมี struct หรือ pointer มันเป็นทั้งในตัวภาษาและในตัว bytecode ครับ ผมขอยกตัวอย่าง C# นะ ภาษานี้มันรองรับ struct ทั้งในตัวภาษาและ bytecode จนถึง Virtual Machine .NET ของมัน ก็รองรับ struct

ซึ่งตรงจุดนี้ผมเรียกว่า "มันยอมรับว่ามันโง่" มันจะไม่พยายามเดาว่าตรงจุดไหนควรเป็น heap object ตรงจุดไหนควรเป็น stack allocation มันยอมรับว่า Garbage Collector ของมันไม่ได้ดีเท่าไหร่ ทำงานบ่อยไป Performance ก็ตก มันจึงเลือกที่จะให้อิสระกับ Programmer มาคิดเองว่า ถ้าอยากได้ Performance ก็ต้องบริหาร Memory ด้วยการใช้ struct และฟีเจอร์ option ต่างๆ

ในขณะที่ Java ไม่มี struct และทั้ง JVM และ DALVIK ไปจนถึง bytecode ไม่รองรับการมี struct และข้ออ้างของฝ่าย Java คือ Java มี JVM ฉลาด สามารถคาดเดาได้เองว่า object ไหนควรจะจัดการยังไงถึงจะมีประสิทธิภาพ รวมไปถึง GC ที่ดีสุดยอด เขียนมาเถอะ ปล่อยให้ Java ทำงานตรงนี้ให้เอง

แต่ปรากฏว่า สุดท้ายมันเป็นการ spoil โปรแกรมเมอร์ ในขณะที่ JVM มันไม่ฉลาดขนาดนั้น มันปล่อย performance drop บ่อยๆ มันไม่สามารถบริหาร Memory ได้อย่างที่ควรเป็นเสมอไป เพราะความซับซ้อนของโปรแกรมที่คนเขียนมันไม่ง่าย(และโดยเฉพาะคนเขียนที่โดนสปอยล์ยิ่งทำให้งาน Optimize ของ Java ยากขึ้น) แม้กระทั่ง GC ที่อวดนักหนา ก็เคยทำ Memory Leak มาแล้วในบางเวอร์ชั่น

สรุปคือ Virtual Machine ในปัจจุบันมันยังตามสมองคนไม่ทัน แต่ JVM ก็ยังจะอวดฉลาดอยู่ร่ำไป และที่ดำเนินรอยตามคือ DALVIK ผมก็ไม่เห็นว่ามันจะต่างกันได้ซักกี่มากน้อย


My Blog

By: ShiRaTo
Android
ShiRaTo's blog
on 07/12/11 11:18 #361404 Reply to:361292 toggle
ShiRaTo's picture

ผมเห็นด้วยกับประเด็น GC แต่ไม่เห็นด้วยกับกรณี Struct ที่อธิบายมานะครับ เดี๋ยวนี้น่าจะไม่ค่อยใช้ Struct กันแล้วครับ

เพราะ MSDN ก็บอกว่า Struct ใช้ดีแค่บางเคส เช่นกรณีมีข้อมูลไม่เกิน 16 Bytes, ถ้าใหญ่กว่านี้ Struct อาจจะแย่กว่า class..

หรือ Microsoft MVP เองก็บอกว่า "In reality it is incredibly rare to write a struct in .NET"

ดังนั้นตัวอย่างที่อธิบายมาเรื่อง Struct ผมไม่เห็นด้วย เพราะว่า Java ไม่มี Struct มันก็ไม่ได้แย่อะไร ในโลกแห่งความเป็นจริง ใช้ class กันหมดอยู่แล้ว

แต่ถ้าประเด็นเรื่อง GC, Dispose ใน C# ที่ให้อิสระ programmer clear memory เอง อันนี้ผมเห็นด้วย เพราะอยากให้ Java ทำเหมือนกันครับ

By: Thaina
Windows
Thaina's blog
on 07/12/11 18:48 #361506 Reply to:361404 toggle
Thaina's picture

มันอยู่ที่ว่าใช้ struct ยังไงด้วยครับ

struct มันมี Characteristic ในการใช้ที่ต่างจาก class ถ้าศึกษาดูจะรู้ว่า ทำไมมันถึงสร้างปัญหาต่างๆที่ว่า และ ใช้ยังไงถึงจะไม่สร้างปัญหานั้น และจะเข้าใจได้ว่า ใช้ยังไงถึงจะเพิ่มประสิิทธิภาพได้

จุดสำคัญคือถ้าเรารู้ว่า struct มันไม่ควร copy บ่อยๆ เราพลิกแพลงไปเขียนโค้ดที่เหมาะสม เราสามารถ ref/out มันได้เวลาส่งเข้า function ตรงนี้ผมก็เรียกว่า มันยอมรับว่ามันโง่ มันไม่เดาให้เราว่าควรส่ง struct เข้าไปในฟังค์ชั่น แบบ reference หรือแบบ value มันให้เราบังคับมันเอง (ซึ่ง ถ้าขนาดของ struct ใหญ่กว่า 16 byte ก็ควรใช้ ref ในการโยนเข้าฟังค์ชั่น และไม่ควร Copy มัน นี่เป็นเรื่องที่รู้กันในคนเขียน C#)

จุดสำคัญอีกอย่างคือ struct มันลดการทำงานของ GC ครับ เพราะ struct ไม่ใช้ GC แต่เก็บข้อมูลได้ โดยหลักแล้วที่เห็นชัดมากๆ คือ array ครับ array ของ struct คือก้อนเมมโมรี่ ในขณะที่ array ของ class เป็นกองพอยน์เตอร์ ที่ต้องคอย new ทีละอัน แถมยังเสียประสิทธิภาพไปในการ reference หลายชั้น

เช่นเดียวกับการมี object ใน class ที่มันต้อง reference หลายชั้น แต่กับ struct มัน reference ชั้นเดียว แล้วมันก็จะชี้ตรงไปที่ memory ก้อนนั้น

และปัญหาสำคัญมากๆอีกอย่างในทางการโปรแกรมคือ struct มันคือ ValueType ครับ ใน Java เราต้องพยายามคิดว่าของทุกอย่างคือ object และต้องคอย clone มัน เวลาที่เราต้องการแค่ copy

คนใช้ Java อาจจะมองว่ายุ่งยากที่ต้องมานั่งดู ว่า variable ตัวไหนคือ struct ตัวไหนคือ class แต่สุดท้าย ถ้าชินแล้ว โค้ดมันจะไม่รก และตรงไปตรงมา ไม่ต่างกับการใช้ int หรือ float ใน Java (เทียบระหว่า Matrix m = object.Transform.Clone() กับ Matrix m = object.Transform)

ในโปรแกรมประเภทธุรกิจที่ไม่ต้องการ performance มาก ทุกคนก็เขียน C# แบบเดียวกับที่เขียน Java แหละครับ มีแต่ class ไม่ต้องไปทำอะไรกับ struct แทบไม่ต้องเขียนจริงๆนั่นแหละ

แต่คนที่ทำงานแบบที่เรียกว่า ใช้ C# แทน C++ ทำงานประเภท performance สูงๆ จะรู้ครับว่ามัน Critical มากๆ อย่างเช่นเกม ยิ่งเป็นเครื่อง XBox (ที่ GC มันกากมาก) การเขียนโปรแกรมแบบพลิกแพลงเพื่อ performance เป็นอะไรที่สำคัญครับ และ struct นี่ตัวจี๊ดเลย ขาดไปนี่แทบจะเรียกว่าทำไม่ได้

ซึ่ง การที่ C# มี struct ผมถึงชี้ว่า เป็น "การยอมรับว่ามันโง่" มันไม่รู้ว่ามันจะฉลาดขึ้นมาเมื่อไหร่ มันถึงให้อิสระว่า มีเครื่องมือให้เขียนโปรแกรมแบบล้วงลึกไปถึงระดับการควบคุม Memory ให้

การ "มี struct" และ "รู้จักใช้" เป็นข้อถกเถียงจากฝ่าย C# มานานแล้วครับว่า ต้องการให้ Java มี struct ไปเพื่ออะไร ลองไปหาอ่านดูได้ครับ มีคนอธิบายไว้เยอะมากว่าทำไม Java ถึงควรมี struct เหมือน C#


My Blog

By: rromk
AndroidUbuntu
rromk's blog
on 07/12/11 20:16 #361638 Reply to:361506 toggle
rromk's picture

ถ้าต้องการ raw performance มันก็มี JNI ให้ใช้อยู่แล้วนี่ครับ??

By: Thaina
Windows
Thaina's blog
on 07/12/11 21:35 #361657 Reply to:361638 toggle
Thaina's picture

รู้จักคำว่า OverHead มั้ยครับ?

ก็เป็นซะแบบนี้อะครับ สาวกจาว่า ต้องพยายามโยนไปโน่นมานี่เพื่อที่จะบอกว่า Java ใช้ได้อยู่แล้ว

นี่กำลังพูดกันถึงเรื่อง DALVIK/JVM มันช้า ไหนบอกว่า DALVIK ฉลาดนักหนา

การที่มันจะเร็วช้าอยู่ที่ virtual machine มัน "ฉลาด" แค่ไหน

สุดท้ายก็ต้องโยนไปหา Native อยู่ดี


My Blog

By: rromk
AndroidUbuntu
rromk's blog
on 07/12/11 22:43 #361721 Reply to:361657 toggle
rromk's picture

ถามว่าผมรู้จัก overhead ไหม ก็รู้สิครับ ใน rep ข้างบนก็ยังพูดถึงอยู่เลย ว่าแต่ได้อ่านที่ผมเขียนหรือเปล่า?

แล้วก็มาอ้างเป็นเรื่องการเมืองอีกละ ก็ในเมื่อระบบมันมีช่องทางให้ใช้อยู่แล้วสำหรับบาง case ถ้าคุณดันไม่รู้จักจะใช้ซะเองแล้วจะมาบ่นหาพระแสงอะไรครับ?

ในความเห็นผม ทุกภาษาทุกระบบมันไม่มี perfect หรอกครับ ย่อมต้องมีข้อดีข้อเสีย ถ้าอ้างแบบคุณ งั้นทำไมไม่ใช้ assembly ไปให้มันรู้แล้วรู้รอดล่ะครับ?

By: Thaina
Windows
Thaina's blog
on 07/12/11 23:15 #361742 Reply to:361721 toggle
Thaina's picture

ถ้ารู้จักคำว่า OverHead ก็แปลว่าควรจะรู้อยู่แล้วนะครับว่าการใช้ JNI มีปัญหาเรื่องการทำงานกับ struct เพราะในฝั่ง Native การมี struct เป็นเรื่องธรรมดา แต่ใน Java ใช้ JNI ก็ต้อง Serialize จาก class ซึ่งตรงนี้ก็เป็นปัญหา Performance อีกเช่นกัน

ซึ่งต่างกับ .NET ที่สร้าง struct ให้ Map กับ struct ใน Native ได้โดยตรง แถมยัง pass struct by reference ได้ตรงกับ Native ได้ด้วย พูดแบบไม่เกรงใจเลยว่าแม้แต่เรื่องนี้ .NET ก็ทำมาดีกว่า เพราะไม่ได้อวดฉลาดมาแต่แรก

แล้วด้วยฟีเจอร์เดียวกัน ในขณะที่ .NET ทำได้โดยตรง แต่ Java ต้องเลี่ยงไป Native นั่นผมไม่เรียกว่าช่องทางครับ ผมเรียกว่าเลี่ยงบาลี ไหนโม้นักหนาว่า มันจะเร็วแค่ไหนขึ้นอยู่กับความฉลาดของ Virtual Machine? สุดท้ายก็ต้องโยนเอาความเร็วไปวิ่ง Native แล้วที่โวยวายแทบตายว่า DALVIK ไม่ใช่ปัญหานั่นมันคืออะไร?

ก็ถึงได้เรียกว่า Virtual Machine อวดฉลาด สุดท้ายก็ต้องโยกไปใช้ Native ผ่าน JNI แต่พอถามถึงทีไรก็โม้ตลอดว่า Java เร็วส์


My Blog

By: rromk
AndroidUbuntu
rromk's blog
on 08/12/11 0:15 #361780 Reply to:361742 toggle
rromk's picture

สรุปว่าปัญหาของคุณคือแค่ไม่มี struct ให้ใช้ใน java ใช่ไหมครับ ก็เลยจะเป็นจะตายเอา? แน่นอนว่าการมี struct ทำให้เขียนโปรแกรมให้เข้าใจได้ "ง่ายขึ้น" สำหรับคนที่ตีกรอบไว้แล้วว่าต้องการจะใช้ struct แต่กลับกันก็เมื่อรู้อยู่แล้วว่าภาษามันไม่มีให้ใช้ ก็ต้องไปหาทางแก้ปัญหาเดิมโดยที่ไม่ต้องใช้ struct สิครับ

เอาง่ายๆ native opcode มันมี struct ไหม? ท้ายที่สุดแล้ว C มันก็ต้อง compile ออกมาเป็นภาษาเครื่อง (native opcode) อยู่ดี แล้วทำไมมันทำงานได้ครับ?

By: Thaina
Windows
Thaina's blog
on 08/12/11 1:45 #361804 Reply to:361780 toggle
Thaina's picture

แล้ว Java มีปัญญาเขียน Native OpCode ในรูปแบบเดียวกับที่ C หรือ C# เขียน struct แล้วคอมไพล์ออกมาเป็น OpCode แพทเทิร์นนั้นได้มั้ย? นี่แหละคือประเด็นว่าทำไม C หรือ C++ และ C# มี struct ให้ใช้ การที่มันเขียน struct ลงไป ก็ทำให้การ compile ออกมาเป็น OpCode แพทเทิร์นที่ Optimize ได้

นั่นคือสิ่งคน Java ฝันว่า JVM มันจะทำได้อัตโนมัติ แต่ความจริงคือรอไปชาติหน้าก็อาจจะยังทำไม่ได้ ในขณะที่ C# ทำได้เพราะปล่อยให้โปรแกรมเมอร์เลือกเอง

ถ้าหากว่า Java มีวิธีพลิกแพลงแก้ปัญหาให้เขียนโปรแกรม Simulation หรือ Graphic แบบ High Performance ได้ คงมีเกม 3D เน้นกราฟฟิค ทำด้วย Java เกร่อเต็มตลาดไปนานแล้วครับ (C# ยังพอมี)

ไอ้คำว่าภาษาไม่มีให้ใช้นั่นแหละประเด็น ทำไมภาษามันถึงต้องไม่ให้ใช้ล่ะ ทั้งๆที่จะทำมันก็ทำได้ ในขณะที่ภาษาอื่นเขามีให้ใช้ และทำไมพวกคุณต้องมาคอยแก้ตัวให้ภาษานี้ การที่ไม่มีฟีเจอร์ที่เขาใช้งานจริงมันควรจะถือเป็นจุดด้อยที่ควรแก้ไข ไม่ใช่แก้ตัวไปเรื่อยๆ

และนี่คือจุดที่ทำให้ผมเรียก Java ว่าอวดฉลาด มันต่างกันตั้งแต่พื้นฐานแล้วว่า Java อวดฉลาดไปหมดทุกอย่าง ไอ้นั่นก็ไม่ต้อง ไอ้นี่ก็ไม่ต้อง JVM เทพ ไม่ต้องห่วงปัญหา Performance แต่พอต้องใช้จริงๆกลับไม่มีปัญญาทำอะไรหลายอย่างอยากที่โปรแกรมเมอร์อยากให้มันเป็น สุดท้าย Performance ก็ไม่ถึงขั้น

ในขณะที่ C# .NET มีให้ใช้เท่าที่ Java มี แต่ยอมรับว่าตัวเองโง่ ไม่อวดฉลาดว่า ตัวข้าทำเองได้ โปรแกรมเมอร์ไม่ต้องยุ่ง แบบที่ Java ชอบทำ ก็เพิ่มฟีเจอร์ให้เลือกใช้ จะใช้ไม่ใช้ก็ได้แต่ถ้ารู้จักใช้ก็จะมีประโยชน์ ทำงานออกมาได้โปรแกรมที่มีประสิทธิภาพมากขึ้นได้

และอย่าลืมว่า JNI มันไม่ใช่ใช้ได้ทุกที่ ในขณะที่ struct เป็นของธรรมดาใน .NET คิดจะใช้ JNI แล้วพอร์ทไม่ได้ทุกที่ ที่โม้นักหนาว่า Run Anywhere ล่ะ?

สุดท้าย

คุณอย่าลืมว่าที่มาเถียงคนอื่นอยู่นี่เพราะตัวเองโม้ว่า DALVIK มันเจ๋งเมพ ประสิทธิภาพสูง Java เร็วส์ พอไล่เข้าจริงๆก็หนีไปอ้าง JNI แล้วมันเกี่ยวกับ DALVIK ตรงไหน? ไหนว่า DALVIK มัน MegaClever ฉลาดสุดๆ สามารถ Generate Code ออกมาได้มี Performance สูงสุดเทียบเท่า Native และ Garbage Collector ก็มีประสิทธิภาพ แล้วทำไมยังต้องพึ่ง JNI อีก?


My Blog

By: rromk
AndroidUbuntu
rromk's blog
on 08/12/11 7:32 #361845 Reply to:361804 toggle
rromk's picture

อย่าพูดชุ่ยๆสิครับ ทำไมเอาสิ่งที่ผมไม่ได้พูดมายัดใส่ปากผมอย่างงี้ล่ะ? ผมไปบอกคุณตอนไหนว่า dalvik มันเจ๋งเทพ มันเร็วกว่าใคร มันฉลาด megaclever ไม่มีใครเหมือน? กลับไปอ่านดูก่อนไหมครับ?

แน่นอนมันไม่ได้เจ๋งเทพ แต่มันก็ไม่ได้ห่วยโคดๆแบบที่คุณว่าหรอกครับ แล้วก็ยังมีการพัฒนามาอย่างต่อเนื่อง app ที่เคยเขียนให้รันใน android เวอร์ชันเก่าๆ เมื่อมารันบน android เวอร์ชันใหม่ๆ แม้จะเป็นฮาร์ดแวร์เดิม มันก็เร็วขึ้น สิ่งเหล่านี้มันเกิดขึ้นได้จากการเขียน native code ไหมครับ?

JNI เป็นสิ่งจำเป็น เหตุผลสำคัญเป็นเพราะว่า java มันติดต่อ hardware โดยตรงไม่ได้ และอีกอย่างการที่มันมี JNI ยังไม่เป็นการบอกอีกหรือว่ามันไม่ได้ "อวดฉลาด"

By: PaPaSEK
ContributorAndroidWindowsIn Love
PaPaSEK's blog
on 11/12/11 21:42 #363153 Reply to:361845 toggle
PaPaSEK's picture

ยังไงๆ ผมก็ยืนยันว่า Bytecode ห่วยกว่า Native แน่นอนครับ

ถ้าจะหักล้าง คงต้องทำให้ App ของ Android กับ Java มันเร็วเท่าๆ กับ Native app ให้ผมเห็นนะครับ

แต่พอดีผมยังไม่เคยเห็นว่า Bytecode ตัวไหนนอกจาก .NET ที่มันจะเร็วพอๆ กับ Native น่ะครับ

ถ้าพิสูจน์ให้คนทั้งโลกเห็นไม่ได้ ผมก็ยังจะบอกว่า Java เร็วส์ ตามเดิมครับ

By: lengzat
lengzat's blog
on 06/12/11 21:38 #361120 toggle
lengzat's picture

บอกได้ร้อยแปดว่าทำไมมันไม่ลื่น แต่สรุปแล้วก็ไม่สามารถทำให้มันลื่นได้

แล้วจะบอกเพื่อ ?

หรือว่าจะได้ให้รู้ว่า มันไม่มีวันจะลื่นได้ เพราะเหตุผลร้อยแปดที่บอกมา

By: superballsj2
iPhoneWindowsIn Love
superballsj2's blog
on 07/12/11 9:31 #361346 Reply to:361120 toggle
superballsj2's picture

จงยอมรับ และอยู่กับมัน


WoW

By: xxa
Android
xxa's blog
on 06/12/11 21:43 #361121 toggle
xxa's picture

เสียงจากนักศึกษาฝึกงาน Follow up to “Android graphics true facts”, or The Reason Android is Laggy

By: thegodth
Android
thegodth's blog
on 06/12/11 21:40 #361122 toggle
thegodth's picture

ผมอยากให้เขามาอธิบายบ้างว่าทำไมแอนด๋อยถึงสูบแบตมากกว่า ios

By: UltimaWeapon
AndroidUbuntuWindows
UltimaWeapon's blog
on 06/12/11 22:05 #361142 Reply to:361122 toggle
UltimaWeapon's picture

เพราะมันใช้พลัง CPU มากกว่าคับ และ CPU วิ่งที่เต็มความเร็ว ไม่เหมือน iPhone ที่ Under clock ลงมา


My Facebook My Blog

By: nolykk
ContributoriPhoneAndroidUbuntu
nolykk's blog
on 06/12/11 22:59 #361174 Reply to:361142 toggle
nolykk's picture

อยากให้กูเกิลพัฒนาอัลกอริทึมให้ทัดเทียม ios ไม่ต้องใช้ clock ไวสุดๆ ก็ทำงานได้ไวได้เหมือนกัน บางอย่างมันช้ากว่าขนาดน่าเกลียด แบบ export clip 1080p

ยกเว้นตวเลข cpu เป็นจุดขายของโทรศัพท์ทุกวันนี้ไปแล้ว ไม่ใช่ว่าใช้จริงเร็ว ลื่นขนาดไหน

สุดท้ายก็ kill ALL the process !!


twitter.com/djnoly

By: UltimaWeapon
AndroidUbuntuWindows
UltimaWeapon's blog
on 07/12/11 1:43 #361263 Reply to:361174 toggle
UltimaWeapon's picture

ปัญหาหลักตอนนี้มันไม่ได้อยู่ตรงนั้นคับ แต่มันอยู่ที่ Virtual Machine vs Native


My Facebook My Blog

By: mr_tawan
ContributoriPhoneAndroidWindows
mr_tawan's blog
on 06/12/11 21:41 #361124 toggle
mr_tawan's picture

มีคนที่อ้างตัวว่าเคยเป็นเด็กฝึกงานของ Google (แต่ตอนนี้ฝึกงานอยู่ Microsoft) บอกว่า เหตุผลที่มันไม่ลื่นเพราะ Android วาด UI Element บน Main Thread แทนที่จะมี UI Thread แยกออกมาเหมือน Mobile OS อื่น ๆ

ส่วนตัวผมไม่ค่อยเชื่อเท่าไหร่ เพราะ OS เก่า ๆ เขาก็วาดบน Main Thread กัน ก็ไม่เห็นกระตุกหนักมากเลย (โดยเฉพาะ Windows 555) แต่อาจจะจริงก็ได้ ใครจะไปรู้


By: BLiNDiNG
AndroidUbuntuWindowsIn Love
BLiNDiNG's blog
on 06/12/11 22:25 #361155 Reply to:361124 toggle
BLiNDiNG's picture

หืมมมม ที่เค้าพูดมาก็ฟังดูมีเหตุผลเหมือนกันนะ (ถ้าเป็นแบบนั้นจริง)

เรื่อง priority ของ Thread ที่ render graphic ว่าของ iOS จะเป็น high แย่งทรัพยากรอันอื่นได้ หยุด process อื่นๆไว้ก่อน graphic มาก่อนเท่านั้น

แต่ของ android เป็น normal แล้วทำพร้อมๆกับอันอื่น(จับปลาสองมือ?) เลยไม่ลื่นเท่า iOS

By: mr_tawan
ContributoriPhoneAndroidWindows
mr_tawan's blog
on 06/12/11 22:47 #361163 Reply to:361155 toggle
mr_tawan's picture

คือ ผมเห็น Windows เองเนี่ยก็มีหลาย ๆ โปรแกรมที่มีงานที่ทำงานอยู่บน UI Thread (ซึ่งเอาเข้าจริง ๆ มันก็คือ Main Thread แหละ) แต่เราเองก็ยังเห็นอาการอืดระดับ Mouse กระตุกอยู่น้อยมาก (เคยเห็นบ้างแต่ไม่เยอะ ส่วนใหญ่ก็คือตอน CPU กินไป 100%) ถึงโปรแกรมจะค้างไปเลยก็เถอะ 555 คิดว่าตรงนี้ควรยกความดีความชอบให้ Thread Scheduler น่ะครับ

ถ้าเป็นอย่างที่เค้าว่าจริง ๆ วิธีแก้ก็คงเป็นออก Programming Model ใหม่ ให้โยกเอา Logic ทั้งหมดแยกไปอีก Thread ไปเลย แล้วก็เช็คเอาว่าเป็น Model ใหม่หรือเปล่า ถ้าใช่ก็ยกระดับความสำคัญของ Thread ขึ้นเป็น Real-time (ถ้าไม่ก็ทำตามวิธีปรกติไป)


By: azezel
AndroidWindows
azezel's blog
on 06/12/11 21:45 #361127 toggle
azezel's picture

สรุปสั้นๆ ณ เวลานี้ นี่คือเหตุผลที่ Android ยังไม่ลื่นเท่า iOS ส่วนในอนาคตก็ยังไม่มีใครรู้


Alone Again

By: salapao
iPhoneWindows PhoneUbuntu
salapao's blog
on 06/12/11 22:06 #361143 Reply to:361127 toggle
salapao's picture

เห็น IOS มันลื่นหัวแตก มาตั้งแต่เกิด


If tomorrow never come.

By: GooEng
ContributorWindows PhoneAndroidUbuntu
GooEng's blog
on 06/12/11 22:54 #361172 Reply to:361143 toggle
GooEng's picture

WP7.5 ก็ลื่นหัวแตก ของผมตกพื้นไปแล้วรอบนึง ลื่นมากกก


คำตอบของข้า คือ ประกาศิต

By: dq-pb
iPhone
dq-pb's blog
on 06/12/11 23:18 #361186 Reply to:361172 toggle
dq-pb's picture

เคยลองเล่น HD7 อยู่ซักแป้ป รู้สึกว่ามันเร็วกว่า iOS จริงๆ

By: TeamKiller
ContributorWindows PhoneWindows
TeamKiller's blog
on 06/12/11 23:39 #361198 Reply to:361172 toggle
TeamKiller's picture

เพื่อนผม ไม่ต้องแมงโก้เลย เดิมๆ 7.0 ก็ลื่นเหมือนกันนะครับ

ซื้อมาไม่กี่วันลื่นหล่นตกบันได เลย

By: saimon_xcite
iPhoneAndroidBlackberryWindows
saimon_xcite's blog
on 07/12/11 12:45 #361433 Reply to:361198 toggle
saimon_xcite's picture

ต้องขึ้นต้นด้วย

"A: วันก่อนครับ"

ด้วยหรือเปล่าครับ

By: danai1920
iPhoneWindows PhoneAndroidBlackberry
danai1920's blog
on 07/12/11 18:19 #361597 Reply to:361433 toggle
danai1920's picture

+1 อิอิ

By: mr_tawan
ContributoriPhoneAndroidWindows
mr_tawan's blog
on 06/12/11 23:33 #361191 Reply to:361143 toggle
mr_tawan's picture

iPod Touch (Gen1) ของผมไม่ได้ลื่นมากนะครับ คือก็ลื่นแบบไม่กระตุก แต่ก็ไม่ได้เร็วชนะเลิศอะไร


By: somsak_sr
ContributorAndroidUbuntu
somsak_sr's blog
on 06/12/11 21:47 #361129 toggle
somsak_sr's picture

ชื่อสกุลเท่มากครับ Hackborn สงสัยเกิดมาเพื่องานสายนี้โดยเฉพาะ

By: Job_The_Gamer
Windows PhoneSymbianWindows
Job_The_Gamer's blog
on 08/12/11 11:51 #362000 Reply to:361129 toggle
Job_The_Gamer's picture

นั่งอ่านมาหลาย Comment เพิ่งเจอคนที่คิดเหมือนกัน 555

By: PhompAng
AndroidSUSEUbuntuWindows
PhompAng's blog
on 06/12/11 21:56 #361135 toggle
PhompAng's picture

ต้องหยอดน้ำมันถึงจะลื่น โดนตบ

By: buzdesign
buzdesign's blog
on 06/12/11 22:12 #361147 toggle
buzdesign's picture

แล้ว....แก้ยังอะ สรุปคือแก้ได้แล้ว หรือ ไม่ได้ 5555

By: altimate
ContributoriPhone
altimate's blog
on 06/12/11 22:15 #361148 toggle
altimate's picture

"When you're the janitor, reasons matter," Jobs tells newly minted VPs, according to Lashinsky.

"Somewhere between the janitor and the CEO, reasons stop mattering," says Jobs, adding, that Rubicon is "crossed when you become a VP."

By: Peace
Peace's blog
on 06/12/11 22:49 #361166 toggle
Peace's picture

ปัญหาจริงๆน่าจะอยู่ที่ render architecture ของ android เองด้วยครับ จริงๆ เราสามารถถกกันได้ดีกว่านี้ถ้าเรามีข้อมูล render architecture ของ android แบบละเอียด

By: TeamKiller
ContributorWindows PhoneWindows
TeamKiller's blog
on 06/12/11 22:56 #361173 toggle
TeamKiller's picture

จะมีตอนต่อเปล่าหว่า ว่าทำไม iOS , Windows Phone ถึงลื่น

By: dq-pb
iPhone
dq-pb's blog
on 06/12/11 23:16 #361183 toggle
dq-pb's picture

ส่วนมากก็เห็นคนใช้แอนดรอย์ดบอกว่าลื่นกว่า iOS ทั้งนั้นนิหว่า ชักงงๆ

By: Go-Kung
Android
Go-Kung's blog
on 06/12/11 23:19 #361187 Reply to:361183 toggle
Go-Kung's picture

ส่วนใหญ่ก็จะเป็น Custom ROM ที่โมฯมาไม่มากก็น้อยแหละครับ

Official ของค่ายที่ทำดีๆอย่าง HTC , SE ก็ยังมีหน่วงๆเป็นบางจังหวะให้เห็นชัดเจนกว่า iOS

ส่วนฝั่ง iOS ก็จะบอกว่า เอ็งใช้ CPU แรงกว่านี่

(เพราะตัวเทียบในปัจจุบันคือ 2 Core vs. 1 Core)

ป.ล. ยังไม่นับ 4S ครับ เพราะยังไม่แพร่หลาย

By: Zenyai
iPhoneAndroidBlackberryWindows
Zenyai's blog
on 07/12/11 0:23 #361221 toggle
Zenyai's picture

ลื่นจะตาย (Rom XDA) มีแต่ market ตัวใหม่ อืดมาก

By: Meow-Meow
ContributoriPhoneWindows PhoneAndroid
Meow-Meow's blog
on 07/12/11 10:03 #361365 Reply to:361221 toggle
Meow-Meow's picture

+100 ชอบที่มันสวย แต่เกลียดตรงมันอืด


I have your six!!!

By: lamoon
Android
lamoon's blog
on 07/12/11 0:26 #361222 toggle
lamoon's picture

ลื่นไม่ลื่นมันอยู่ที่ใจ :P

By: pd2002
pd2002's blog
on 07/12/11 0:34 #361226 toggle
pd2002's picture

ผมใช้ Galaxy Nexus มาสองวันแล้ว มันลื่นมากจริงๆ เท่ากับ iOS เลยครับ เครื่องก่อนหน้านี้ไม่ต้องพูดถึง กระตุกกันเป็นนิจ ปล.ผมใช้ iPhone4 คู่กันด้วยนะครับ

By: Not Available a...
iPhoneAndroidWindowsIn Love
Not Available at this Moment's blog
on 07/12/11 4:07 #361285 toggle
Not Available at this Moment's picture

คนทั่วไปไม่มีใครอยากรู้หรอกว่าทำไมมันถึงไม่ลื่น คำตอบที่ให้มานี่ไม่ช่วยให้อะไรดีขึ้นมาเลย แถมยังย้ำแผลเดิมหนักกว่าเก่าว่าทั้งๆที่รู้แต่ก็ยังไม่มีปัญญาแก้ปัญหาอีกด้วยซ้ำไป

เค้าอยากได้คำตอบว่าเมื่อไหร่มันจะลื่นมากกว่า (เอ้ะ หรือจะเป็น มันจะลื่นได้มั้ย) ต่างหากล่ะ!


ชื่อ : Not Available at this Moment (N/A)

By: paween_a
iPhone
paween_a's blog
on 07/12/11 10:14 #361379 Reply to:361285 toggle
paween_a's picture

+1

By: lancaster
ContributoriPhoneAndroidWindows
lancaster's blog
on 07/12/11 5:07 #361291 toggle
lancaster's picture

กูเกิลควรทำ home screen ที่เป็นภาพ prerender เหมือน ios ออกมาบ้างนะ ถึงจะทำไรไม่ได้เลยนอกจากวางไอค่อน แต่มันก็ลื่นเหมาะกับการโชว์

By: manster
iPhoneAndroidUbuntuWindows
manster's blog
on 07/12/11 8:22 #361321 Reply to:361291 toggle
manster's picture

5 5 5 เห็นภาพเลย

By: F16
iPhoneWindows PhoneAndroidBlackberry
F16's blog
on 07/12/11 6:12 #361299 toggle
F16's picture

หายสงสัยละทำไม hardware แร๊งแรง แต่ทำไมเลื่อนๆละมันกระตุกๆนิดๆ

ใช้ iPhone ต่อไป กี่รุ่นๆก็ลื่นไม่มีกระตุกให้ขัดใจ ^^

By: btxxxx
AndroidWindows
btxxxx's blog
on 07/12/11 8:17 #361319 toggle
btxxxx's picture

เกี่ยวกับ android มีพวก Widget ต่าง ๆ และ Process เบื้องหลังที่ทำงานพร้อม ๆ กันเยอะกว่า iPhone หรือเปล่า? ของ iPhone ผมเปิดดูไม่เป็น แต่เห็นว่าของ Android มันเยอะมาก (คือสงสัยว่างานอย่างเดียวกันแต่ Android อาจใช้ Process ที่ซับซ้อนกว่า หรือใช้ทรัพยากรมากกว่า)

มีผิดตรง

hardware acceleration ไม่ได้มีแต่ข้อดีเสมอไป เพราะโพรเซสของแอพจะต้องเปลืองแรมอีก 8MB ต่อโพรเซสสำหรับเรียกใช้ OpenGL ดังนั้นงานบางงานในตัวระบบปฏิบัติการ Android 4.0 จึงเลือกจะไม่ใช่ hardware acceleration เพื่อประหยัดแรม โดยเฉพาะงานที่เพียงซีพียูลำพังสามารถทำได้ดีอยู่แล้ว (เช่น ไม่ควรจะเรนเดอร์ status bar ด้วย OpenGL เพราะไม่คุ้ม)

By: Not Available a...
iPhoneAndroidWindowsIn Love
Not Available at this Moment's blog
on 07/12/11 12:43 #361431 Reply to:361319 toggle
Not Available at this Moment's picture

iOS4 ผมมีประมาณ 30 Procress เวลาไม่เปิด App ใดๆเลยครับ


ชื่อ : Not Available at this Moment (N/A)

By: lancaster
ContributoriPhoneAndroidWindows
lancaster's blog
on 07/12/11 12:50 #361437 Reply to:361431 toggle
lancaster's picture

ไม่เกี่ยวครับ อันนั้นเป็นพวก system service

ที่ช้าจริงๆคือแอพที่รันเป็น service แล้วเขียนห่วยๆนี่แหละตัวปัญหา

By: btxxxx
AndroidWindows
btxxxx's blog
on 07/12/11 12:59 #361440 Reply to:361437 toggle
btxxxx's picture

ผมว่าอาจจะเกี่ยวเหมือนกันนะ เพราะถึงจะเป็น System service แต่ถ้ามันเขียนห่วยเหมือนกัน ก็อาจจะเป็นปัญหาได้หรือเปล่า?

จริง ๆ ปัญหานี้อาจจะเป็นเพราะ... คนใช้ iphone นิ้วมันกว่าเลยทำให้ลื่นกว่าก็ได้ :P

By: lancaster
ContributoriPhoneAndroidWindows
lancaster's blog
on 07/12/11 13:09 #361443 Reply to:361440 toggle
lancaster's picture

ปกติ system service ก็เขียนมาดีนะครับ อ้อ ยกเว้น home screen ของผู้ผลิตแต่ละห้อที่ขยันกันยัดเข้ามา อย่างเช่น touchwiz ตัวแรก ห่วยบรม

แต่ที่คุณ NA ว่ามาน่าจะหมายถึงตอนรันคำสั่ง ps มากกว่าครับ ซึ่งพวกนั้นเอามาวัดไม่ได้ครับ เพราะมันมีเยอะแยะตั้งแต่ init ยัน filesystem เลย แถมแต่ละตัวก็ไม่ค่อยได้ทำงานเท่าไหร่ครับ

ที่แน่ๆ ios มันลื่นกว่าชัวร์ เพราะนอกจากของ apple เองหรือที่ผ่านการตรวจสอบแล้ว app อื่นๆไม่สามารถรันเป็น background service ครับ อย่าว่าแต่ background service เลยครับ แค่จะสลับหน้าต่าง multitask ยังโดน freeze เลย ไม่ได้เป็น multitask จริงๆสักนิด

By: btxxxx
AndroidWindows
btxxxx's blog
on 07/12/11 13:13 #361447 Reply to:361443 toggle
btxxxx's picture

ชื่อเล่นน่ารักดีครับ NA (นา) ชื่อเต็มมันยาว :)

ย่อหน้าล่างที่ว่าผมก็คิดว่าน่าจะเกี่ยวเหมือนกัน

By: Not Available a...
iPhoneAndroidWindowsIn Love
Not Available at this Moment's blog
on 07/12/11 18:32 #361600 Reply to:361447 toggle
Not Available at this Moment's picture

N/A ก็ยังดีนะ สั้นเกิ้นนน --"


ชื่อ : Not Available at this Moment (N/A)

By: paween_a
iPhone
paween_a's blog
on 07/12/11 10:17 #361380 toggle
paween_a's picture

ผู้ใช้เขาไม่ได้อยากรู้หรอกว่าเพราะอะไรถึงไม่ลื่น จงไปแก้มาให้มันลื่นซะ ทำไม iOS มันทำได้

By: mk
FounderAndroidRed HatWindows
mk's blog
on 07/12/11 12:44 #361432 Reply to:361380 toggle
mk's picture

Blognone ไม่ใช่เว็บสำหรับผู้ใช้ทั่วไปนะครับ อยู่ผิดเว็บหรือเปล่า?


my disclaimer

By: bahamutkung
ContributorAndroidWindows
bahamutkung's blog
on 07/12/11 13:34 #361448 Reply to:361432 toggle
bahamutkung's picture

แรงส์!


"With the first link, the chain is forged. The first speech censured, the first thought forbidden, the first freedom denied, chains us all irrevocably."

By: danai1920
iPhoneWindows PhoneAndroidBlackberry
danai1920's blog
on 07/12/11 18:26 #361598 Reply to:361448 toggle
danai1920's picture

+1 T^T

By: paween_a
iPhone
paween_a's blog
on 18/12/11 7:09 #365444 Reply to:361432 toggle
paween_a's picture

ตอนแรกไม่มั่นใจครับ แต่ตอนนี้คิดว่าใช่แล้ว ที่นี่น่าจะเป็นโรงเรียนมัธยมแห่งหนึ่ง เพราะเห็นคนแถวนี้ชอบเอาชนะความเกรียนด้วยความเกรียนกว่าเสมอ ๆ

By: McKay
iPhoneAndroidIn Love
McKay's blog
on 18/12/11 9:04 #365451 Reply to:365444 toggle
McKay's picture

x


"Microsoft is doing a terrific job of pissing off it's existing customer base to chase the sliver that is the tablet market." - William Topping

By: superballsj2
iPhoneWindowsIn Love
superballsj2's blog
on 19/12/11 8:35 #365798 Reply to:365444 toggle
superballsj2's picture

Android Fanboy เริ่มเข้าใกล้สาวกแอปเปิ้ลเข้าไปทุกวันแล้ว แตะต้องมิได้เลย


WoW

By: dokapom
SUSE
dokapom's blog
on 08/12/11 1:35 #361812 Reply to:361380 toggle
dokapom's picture

OS ขั้นเทพ Hardware ขั้นเทพ จับต้องควรระวัง


user นี้โดนแบน ฐานใช้อีเมลปลอมครับ

By: DashoIISO
Windows PhoneAndroid
DashoIISO's blog
on 07/12/11 11:13 #361394 toggle
DashoIISO's picture

Android เล่นทำ หน้า Home แถมยังกดปุ่มให้เข้าไป Menu App ไว้อีก ก็ประมวลผลไป 2 ชั้น แถมยังมี Widget / Shortcut นู้นนี่เยอะแยะ มีตัว Launcher ให้ประมวล หนักๆ - -* ลืม Noticifation bar

ส่วนพวก iOS / WP7 / Meego 1.2 Harmattan มันลื่นๆ เพราะ ไม่ได้ซับซ้อนแบบ Android

ถ้าอยากเห็น Android ที่ลื่นๆ ลองดู Rom MIUI เค้าทำเป็นสไตล์ iOS เรียบๆ ง่ายๆ ไม่มีการกดเข้า Menu นู้นนี่ เลยทำให้มันลื่น (แต่เพราะไม่มีนี่แหละ มันเลยเหมือนไม่ใช่ Android)

OS แต่ละตัวก็มีเสน่ห์ของมันครับ

Android มันยืดหยุ่นดี ปรับเปลี่ยนได้ตามใจ แต่ความลื่นก็ขึ้นอยู่กับงบของเรา ได้เครื่องแรง ก็ใช้ OS ได้คุ้ม ยิ่งได้เห็น ICS ยิ่งดูดีขึ้นเยอะ ล้ำมาก

WP7 ก็แหวกแนว UI ลื่นดี เพราะมีแค่แท่ง 4 เหลี่ยมเลื่อนไปมา (ใช้ๆ ไปเบื่อเพราะมันปรับเปลี่ยนอะไรไม่ได้เลย -*-)

iOS ก็ดีที่ปรับเปลี่ยน Wallpaper รูปแบบหน้าจอ ต่างๆ UI ยังลื่นหัวแตก ยังไงก็ยกให้เค้าเป็นที่ 1 ทำทุกอย่างออกมาได้สวยงาม ตั้งแต่ Version แรกยันล่าสุด ยังไงก็ยังเหมือนเดิม (แถมยังเป็นที่รักของชาวโลก 555)

Meego 1.2 Harmattan ก็คล้าย iOS ผสมกับ WP7 เลย เรียบง่าย Meego 1.2 ได้แสดงให้เห็นว่า แม้ Spec เครื่องจะกาก แต่ก็ไม่มีหน่วงเลย Touch ได้ติดมือ แถมยังเด่นที่ MultiTasking ของเค้าดี (ตอนนี้ผมหยุดอยู่ที่ N9 ^^)

Meego ตัวธรรมดา เหมือนลอก Android กับ Symbian มาชัดๆ (อย่าพูดถึงเลย ตายไปแล้ว)

By: MrWhisper
ContributorWindows PhoneBlackberrySymbian
MrWhisper's blog
on 07/12/11 14:07 #361463 Reply to:361394 toggle
MrWhisper's picture

จริงๆ Live tiles ของ WP7 นี่ก็ดูไม่ต่างกับ Widget ของแอนดรอยด์มากนะครับ มันก็ปักอะไรลงไปได้ แล้วก็ทำงานดึงข้อมูลอะไรออกมาแสดงได้เหมือนกัน จริงๆมันก็เป็น Widget แบบสี่เหลี่ยม กินพื้นที่ช่องหรือสองช่อง แบบแอนดรอยด์นั่นแหละครับ

เมนูก็ต้องกดเข้าไปอีกขั้นเหมือนแอนดรอยด์


[ JIRAYU.IN.TH ]

By: bukindepsbbl
Windows Phone
bukindepsbbl's blog
on 07/12/11 14:59 #361496 Reply to:361394 toggle
bukindepsbbl's picture

แค่อยากจะบอกว่า แท่งๆ ในหน้าจอหลักของ WP7 นั้นมันทำหน้าที่ทั้ง widget และ Notification ครับ ซึ่งมัน real time มากทีเดียว ดู FB จาก People hub ได้ทันที chat (FB,MSN,SMS) โดยไม่ต้องลงไรเพิ่มเลย

ที่ขัดใจตอนนี้ ผมว่าภาษาไทย

By: MrWhisper
ContributorWindows PhoneBlackberrySymbian
MrWhisper's blog
on 07/12/11 15:17 #361504 Reply to:361496 toggle
MrWhisper's picture

+1 ภาษาไทยโอเคเมื่อไหร่ ผมสอยทันทีเลย


[ JIRAYU.IN.TH ]

By: Hilcrhyme
iPhoneWindows PhoneAndroidBlackberry
Hilcrhyme's blog
on 07/12/11 15:28 #361509 Reply to:361504 toggle
Hilcrhyme's picture

ผมรอwp7ตัวที่รัน mkv ได้

By: xxxooo
Windows PhoneWindowsIn Love
xxxooo's blog
on 08/12/11 0:35 #361788 Reply to:361509 toggle
xxxooo's picture

คงไม่มีวันแล้วหล่ะครับ

เพราะ ทุกโปรแกรมที่ต้องการเล่น Music or Video ต้องเล่นผ่าน Zune ซึ่ง Zune ก็ทำงายได้แค่ WMV กับ MP4 ผ่าน DXVA อีกต่อนึง

ดูจาก โครงสร้างแล้ว ยากครับ สำหรับ Code แบบอื่น

ไม่ต้องรอแล้วครับ ซื้อเลย

Microsoft มีโปรแกรมสำหรับ Convert Video คือ Microsoft Expression Encoder 4 SP1 ซึ่งใช้ได้ฟรี ไฟล์เล็ก ภาพชัด แต่ ความยาว ไม่เกิน 10 นาที ถ้าอยากได้นานกว่านั้น ต้องเสียเงิน


"My hardware, my rules. I brought back what you took away." by OtherOS++ Project Team

By: JPorsh
iPhoneAndroidSymbianWindows
JPorsh's blog
on 16/12/11 12:28 #364971 toggle
JPorsh's picture

ดราม่า

By: boosh
boosh's blog
on 01/04/12 4:43 #402738 toggle
boosh's picture

ดีจังเราเป็นคนที่ใช้ Galaxy S II แล้วไม่กระตุกเลย App ไม่เด้งถี่ยิบแถมตอนเด้งออกมาแล้วกดเข้า App ไม่ได้อีก เหมือนอย่าง OS ที่รันบน CPU ช้าๆ ใช้แรมความจุต่ำๆได้... แต่แอนดรอยด์สมัย Galaxy S มันกากจริงๆ แต่ กากเพราะสเป็คต่ำ หรือเพราะ OS ไม่ดี แล้วการที่ OS รันสเป็คต่ำๆแล้วไม่ลื่นถือว่าเป็นสิ่งไม่ดี(ขนาดนั้น)? ในเมื่อเวลาเรารัน App หรือเล่นเกม มันก็ต้องใช้ Hardware สเป็คสูงๆอยู่ดี

อ่านจากหลายๆคอมเมนท์ว่า "จะมาอธิบายทำไม ไปทำให้มันลื่นสิ" มันก็ดีแล้วไม่ใช่หรอที่ออกมาอธิบายว่าทำไมมันไม่ลื่น(แล้วมันไม่ลื่นยังไง ณ ปัจจุบัน?) เชื่อว่าหลายคนก็คงสงสัยว่าทำไมมันไม่ลื่น เค้าก็ออกมาตอบแล้วไง ใช่มะ แล้วพอก็ออกมาตอบก็พูดใส่หน้าเค้ากลับว่า "ไม่ต้องมาพูด ไปทำให้ลื่นไป ฉันไม่สนหรอกว่าทำไม ฉันสนแค่ให้มันลื่นก็พอ" WT...?