ช่วงนี้ใช้ Java บน GAE ครับ และกำลังปวดกระโหลก กับการที่มันไม่มี struct ให้ใช้ ด้วยหลายๆเหตุผล เลยอยากทราบว่า คนใช้ Java มีวิธีอะไรบ้างที่ใช้แทน User Defined ValueType เวลาที่อยู่ๆก็ต้องการจะใช้ขึ้นมา ขอขอบคุณล่วงหน้าครับ
ปกติผมใช้ class ครับ lancaster Sat, 07/05/2011 - 01:18 ปกติผมใช้ class ครับ Log in or register to post comments บางทีมันจะมีเหตุการณ์ไม่ปกติค Thaina Sat, 07/05/2011 - 01:45 In reply to ปกติผมใช้ class ครับ by lancaster บางทีมันจะมีเหตุการณ์ไม่ปกติครับ เช่น ต้องการให้มัน Copy by Value ทั้งคลาส อยากสร้าง Array ที่มัน Packed ต้องการ Performance ไม่ต้องการ indirection ไม่อยากเช็ค null ฯลฯ Log in or register to post comments ข้อแรกก็ .clone() lancaster Sat, 07/05/2011 - 03:49 In reply to บางทีมันจะมีเหตุการณ์ไม่ปกติค by Thaina ข้อแรกก็ .clone() เอาได้นี่ครับ ส่วนเรื่อง performance ถ้าคุณซีเรียสจุดนี้ ผมว่าไม่เหมาะตั้งแต่เขียน java แล้วล่ะครับ lol ข้ออื่นๆ ผมไม่ทราบ ต้องให้เซียนชวามาตอบ Log in or register to post comments อย่าไปแคร์ Performance JavaDevil Sat, 07/05/2011 - 03:47 อย่าไปแคร์ Performance มากมายครับ คุณไม่ต้อง Optimize ในรายละเอียด เขียนตาม best practice ของ java ก็น่าจะทำให้ performance อยู่ในเกนณ์ที่รับได้นะครับ ผมเชื่อว่า ใช้ Class แทน struct ก็ไม่ได้ช้าลงมากมายครับ Log in or register to post comments +1 rulaz07 Sat, 07/05/2011 - 14:39 In reply to อย่าไปแคร์ Performance by JavaDevil +1 Log in or register to post comments ตอนนี้ผมใช้ GAE ครับ Thaina Sat, 07/05/2011 - 14:54 In reply to อย่าไปแคร์ Performance by JavaDevil ตอนนี้ผมใช้ GAE ครับ ยังฟรีอยู่ แต่ถ้าเกิดมีคนใช้มากๆ ก็กิน CPU Time ถ้าเกินก็ต้องเริ่มซื้อ Package และมันก็คิดตาม CPU Time ที่มากขึ้นด้วย Performance เปนเงินเปนทองครับ Log in or register to post comments ถ้าใช้ structure ไม่ได้นี่ UltimaWeapon Sat, 07/05/2011 - 09:22 ถ้าใช้ structure ไม่ได้นี่ เป็นภาษาที่ไม่ซัพพอร์ท data structure ระดับ binary เลย ภาษาหลายตัวผมก็เห็นใช้ได้นะ เช่น C#, Perl Log in or register to post comments struct มันผิดหลักการ OOP boykeng Sat, 07/05/2011 - 10:19 struct มันผิดหลักการ OOP หน่ะครับ ไม่ต้องห่วงเรื่องความเร็ว Log in or register to post comments ฟังดูน่าสนใจ struct Thaina Sat, 07/05/2011 - 15:13 In reply to struct มันผิดหลักการ OOP by boykeng ฟังดูน่าสนใจ struct มันผิดหลักการ OOP อย่างไรครับ? ในเมื่อ Java ก็ยังต้องมี Primitive และ C# ก็มี struct ให้ใช้ ก็ยังเปน OOP ได้ ถ้าบอกว่า struct มันผิดหลักการ OOP แล้ว struct ใน C# ทำให้ C# ผิดหลักการ OOP อย่างไรได้บ้างครับ? Primitive ใน Java ทำให้ Java ผิดหลักการ OOP อย่างไรบ้างครับ? ถ้าผมจำไม่ผิด หลักการ OOP ก็จะมีหลักการของ Value Type อยู่ด้วยนะครับ Log in or register to post comments การผิดหลักการ OOP เล็กๆ น้อยๆ nant Sat, 07/05/2011 - 15:18 In reply to ฟังดูน่าสนใจ struct by Thaina การผิดหลักการ OOP เล็กๆ น้อยๆ เช่น Primitive type ทำเพื่อความสะดวก สบาย Log in or register to post comments แล้วมันผิดหลักการ OOP Tg Wed, 11/05/2011 - 11:34 In reply to การผิดหลักการ OOP เล็กๆ น้อยๆ by nant แล้วมันผิดหลักการ OOP ตรงไหนเหรอครับ.... Log in or register to post comments ผิดที่ primitive types nant Thu, 12/05/2011 - 20:20 In reply to แล้วมันผิดหลักการ OOP by Tg ผิดที่ primitive types ไม่มีคณสมบัติเป็นวัตถุไงครับ Log in or register to post comments ไม่มีครับ nant Sat, 07/05/2011 - 15:16 ไม่มีครับ ถ้าให้เหมือนที่สุดคือ class ที่ไม่มี method แล้วถ้าจำไม่ผิด c ก็ไม่มี packed array เช่นกัน หรือคำว่า packed array ของคุณ thaina หมายถึง a[n]? Log in or register to post comments สงสัยผมเรียกผิด หมายถึง อย่าง Thaina Sat, 07/05/2011 - 15:33 In reply to ไม่มีครับ by nant สงสัยผมเรียกผิด หมายถึง อย่าง byte[] A = new byte[X] ธรรมดานี่แหละครับ ก็คือ มันจอง memory ตรงๆ ขนาด X byte ไม่ใช่จอง address ไปที่ byte อีกที น่ะครับ Log in or register to post comments จอง memory กับ จอง address JavaDevil Sat, 07/05/2011 - 18:05 In reply to สงสัยผมเรียกผิด หมายถึง อย่าง by Thaina จอง memory กับ จอง address มันต่างกันตรงไหนครับ? Log in or register to post comments ต่างกันแบบ Byte[] B = new Thaina Sat, 07/05/2011 - 18:43 In reply to จอง memory กับ จอง address by JavaDevil ต่างกันแบบ Byte[] B = new Byte[4]; //Array ขนาด 4 object แต่ละ object ต้อง new Byte() กับ byte[] B = new byte[4]; //Array ขนาด 4 byte น่ะครับ Log in or register to post comments ผมว่า ขนาดผมว่า JavaDevil Sun, 08/05/2011 - 00:08 In reply to ต่างกันแบบ Byte[] B = new by Thaina ผมว่า ขนาดผมว่า มันเพิ่มต่างกันไม่เยอะหลอกครับ ^^ Log in or register to post comments ปกติ reference to object Thaina Sun, 08/05/2011 - 00:37 In reply to ผมว่า ขนาดผมว่า by JavaDevil ปกติ reference to object น่าจะขนาด 4 byte ถ้ามี object ขนาด 4 byte (เช่น IPAddress) C# จอง Array struct รองรับ 256 connection == 1024 byte ก็ 1 KB + 4 byte(object array) Java จอง Array class รองรับ 256 connection == 1024 byte ก็ 1 KB + จองข้อมูลกระจายใน Heap อีก 256 ตัว == 1 KB รวม 2 KB + 4 byte(object array) struct ทั่วไปใน C# ขนาดของมันอยู่ในช่วงเฉลี่ย 4 - 16 byte ที่ใหญ่จริงๆและมีคนใช้ประจำคือ 64 byte (Matrix) Java ต่างกันไม่เยอะหรอกครับ แค่กินเมมมากขึ้นประมาณ ร้อยละ 50 กว่าที่ควรจะเปน แค่นั้นเอง ยังไม่นับ Performance ที่เสียไป จากการ indirection โสตหนึ่ง จากการ allocate heap บ่อยๆ ทำให้เกิดช่องโหว่กระจายใน memory อีกโสตหนึ่ง จากการที่ต้องให้ GC ดูแล object เล็กๆน้อยๆ เหล่านี้ ที่บางครั้งใช้งานแค่ครั้งเดียว อีกโสตหนึ่ง Log in or register to post comments เป็นข้อแตกต่าง(เสีย?)ของ Java McKay Sun, 08/05/2011 - 00:51 เป็นข้อแตกต่าง(เสีย?)ของ Java ครับ ปรับตัว ไม่ก็เลิกใช้ น่าจะเป็นสองวิธีที่ดีที่สุด เพราะ Java ไม่ใช่ C# และ C# ก็ไม่ใช่ Java ครับ Log in or register to post comments คุณ thaina ไปดู benmark nant Sun, 08/05/2011 - 02:09 คุณ thaina ไปดู benmark ระหว่าง C# กับ JAVA สิครับ ในหลายๆการทดลอง JAVA เป็นรอง C++ เล็กน้อย สูสีกับ C# เลยทีเดียว ผมเข้าใจว่าคุณ thaina นิยม C# ซึ่งก็ไม่ผิดอะไรที่จะมีภาษาที่ชื่นชอบเป็นพิเศษ ทำให้มองภาษาที่เป็นคู่แข่งกันลบไปหน่อย (ผมเองก็แฟนบอย C++ ผมยังมอง D ในแง่ลบเลย แต่ผมก็เขียนได้นั่นแหละ) อะนี่ครับ C# vs java Log in or register to post comments เปล่าเลยครับ Thaina Sun, 08/05/2011 - 02:42 In reply to คุณ thaina ไปดู benmark by nant เปล่าเลยครับ มันไม่เกี่ยวหรอกว่าผมนิยมอะไร แต่มันถึงจุดที่ มันคือสิ่งที่ควรจะต้องใช้แต่กลับไม่มีให้ใช้ ต่างหาก Benchmark ในหลายๆการทดลอง มันก็คือ Field ที่ ผมไม่ได้ใช้ในเวลานี้(และคงไม่ต้องใช้) และอีกหลายๆการทดลองที่ Benchmark มันแพ้รูดมหาราช ดันอยู่ใน Field ที่ผมกำลังอยากจะใช้ ซึ่งผมคงไม่ต้องมาทนฝืนใช้ ถ้าหากไม่ใช่เพราะอยู่ใน Platform ที่มันบังคับ บอกอีกทีว่าผมกำลังใช้ GAE ซึ่งถ้าไม่ใช่ Java ก็ต้อง Python และจากกระทู้นี้ก็ทำให้ผมตัดสินใจได้ว่า ถ้าใช้ GAE ต่อไป ควรจะไปตายเอาดาบหน้ากับ Python ดีกว่า ไม่น่าเลือกเสี่ยงกับ Java แค่เพราะเห็นว่าเคยใช้มาบ้างเลย Java มันก็รู้ทั้งรู้ ว่าตัวเองพยายามจะให้ทุกคนใช้ตัวเองในทุกๆที่ ทั้งมือถือทั้งอะไรที่ Spec ต่ำต้อย หรืองานหนักๆอย่าง Graphic หรือคำนวนวิทยาศาสตร์ แต่กลับพยายามตัดฟีเจอร์ที่มีผลกับ Performance ออกหมด แล้วมาบอกให้โปรแกรมเมอร์ทนเอา ตั้งแต่สมัยที่ผมไม่คิดจะอวย C# ผมก็ยังคิดว่า Java กากส์ และตอนนี้ยิ่งมั่นใจ ว่าใครที่พูดว่า Java เร็วส์ คนนั้นกำลังหลอกลวงคนฟัง ตั้งกระทู้นี้มาผมก็ตั้งใจจริงๆนะ ว่ามีใครจะบอกว่า Java มันมีวิธี Optimize กันบ้างหรือไม่ เอาจริงๆผมก็เห็นพวกเว็บต่างประเทศ เขาก็มีแนะนำให้ใช้ BitBuffer (ที่มาถามเพราะเผื่อใครจะมีเทคนิคอะไรดีกว่านั้น) ซึ่งจริงๆมันก็คือทำ Array ของ struct แบบปลอมๆ แต่ประสิทธิภาพก็ยังต่ำกว่านิดหน่อย แถมความง่ายในการใช้งานต่างกันหลายขุม คนที่เผยแพร่วิธีนี้บอกว่า ต้องออปติไมซ์โปรแกรมใน Server เพราะ Java แดกทรัพยากรมากเกินไป พอเอาวิธีนี้มาใช้ ก็ดีขึ้นมาหลายเท่า สรุปคือ Java มันตัดฟีเจอร์ดีๆออก "เพราะอยากให้คนใช้งานได้ง่าย" แต่พอถึงขั้นที่ยังไงๆ ก็ต้องใช้ กลายเปนคนใช้ต้องเล่นท่ายาก แถมก็ไม่ได้เรื่องเท่าภาษาอื่นเขา Java ควรจะละอายแก่ใจบ้างนะครับ ว่าเกิดมาก่อนกี่ปีแล้ว เอามาอวดว่า ตั้งหลาย Benchmark ที่สูสีกับ C# น่าภูมิใจตรงไหนเนี่ย สรุปก็แค่ขี้เกียจแก้ JVM ให้มันรองรับ struct ดีแต่กินบุญเก่า แล้วก็อ้างข้างๆคูๆไปเรื่อย งานไม่ต้องมี Performance บ้างล่ะ (มือถือล่ะ?) รักษา OOP บ้างล่ะ (สุดท้ายก็ต้องมี Primitive อยู่ดี ก่อนหน้านี้ก็จำใจต้องเพิ่ม long เข้าในระบบ) แล้วก็มาช่วยกันออกรับแทน ไม่แย่ขนาดนั้นหรอก ไม่ต้องใช้หรอก สาวกยังไงก็เปนสาวกจริงๆ ขอพูดอย่างสุดท้ายว่า ผมเห็น Java มันก็พัฒนาอะไรๆ ตามคำเรียกร้องของคนใช้ OpenJDK มี Mailing List แต่ในเมื่อมีแต่ผู้ใช้สาวกแบบนี้ SUN พูดว่าไม่ต้องใช้ struct ก็ชาบูว่า ดีแล้วๆ ไม่ต้องใช้ๆ แล้วก็มาปลอบกันเอง "Performance ไม่ดี? ไม่ต้องห่วงๆ Java ไม่ห่วง Performance เขียนไปตามแนวคิดเขาก็พอ" ชาติหน้าก็คงไม่มีให้ใช้ Performance ห่วยยังไงก็ได้ เพราะมันคือ Java ขอบคุณครับ ที่ทำให้ผมได้ซาบซึ้งกับคำว่าสาวกอีกครั้งหนึ่ง Log in or register to post comments การทำ packed struct เป็นการ lew Sun, 08/05/2011 - 04:33 In reply to เปล่าเลยครับ by Thaina การทำ packed struct เป็นการ "ลด" performance ครับ แม้แต่ภาษา C ก็ไม่แนะนำให้ทำ ถ้าไม่มีความต้องการพิเศษเช่นการทำ binary compatible การทำ VM ของทุกคนติดเพดานความเร็ว CPU ทั้งสิ้น ไม่มีใครสามารถทำ VM ให้เร็วกว่าความเร็ว CPU ได้ตัว Java เองมี JIT มาล่วงหน้าหลายปี ทำความเร็ว raw throughput ได้ใกล้เคียง CPU ในหลายๆ กรณี ถ้า VM อื่นๆ จะตามมาใกล้ ก็ไม่รู้จะหนีไปไหนครับ รอบนี้ผมถือว่าคุณ "ลองของ" ผมที่พยายามใช้คำไม่สุภาพหลังจากผมแบนคุณไปหนึ่งสัปดาห์แล้ว แบนหนึ่งเดือนครับ และนี่เป็นรอบสุดท้ายก่อนแบนถาวร Log in or register to post comments ผมเข้าใจว่าผมกำลังคุยเรื่องวิ nant Sun, 08/05/2011 - 12:04 In reply to เปล่าเลยครับ by Thaina ผมเข้าใจว่าผมกำลังคุยเรื่องวิชาการนะครับ คุณ thaina สงสัยเรื่อง performance ก็ต้องวัดกันสิครับ ว่าเทียบกันแล้วเป็นอย่างไร การที่ไม่มี struct ทำให้ประสิทธิภาพตกหรือเปล่า ? คำตอบคือไม่ค่อยตกเมื่อเทียบกับ C# ส่วนเร้องสาวกไม่สาวกนั้น? ผมไม่ได้ตำหนิคุณหรือเหยียดใครว่าเป็นสาวกแล้วไม่ดี เพราะผมก็สาวก C/C++ นั่นแหละครับ ผมไม่ได้ออกรับแทนจาวา (คุณน่าจะรู้ว่าสาวกภาษาเนทีฟมีมุมมองอย่างไรกับ ภาษาบน VM นะ) ผมแค่ต้องการคุยกับคุณ เรื่องจาวา Log in or register to post comments ตอบ จขกท ... ทำ class vavar Sun, 08/05/2011 - 17:00 ตอบ จขกท ... ทำ class ปกติ แต่ไม่ต้องใช้ method แล้ว reference แบบ package-protected (define แบบไม่ใส่ public/private/protect) หรือถ้าจะให้ advanced กว่านี้ รอ java7 ครับ ... Log in or register to post comments ลองสร้าง Annotation ไปกำกับ vittee Mon, 09/05/2011 - 10:08 ลองสร้าง Annotation ไปกำกับ Class ให้มีพฤติกรรมคล้ายๆ struct พอจะได้มั๊ยครับ ทำคล้ายๆเวลาจะกำหนด struct alignment บน C# นะครับ หรือไม่ก็ ใช้พวก Serialize/Externalize Interface เข้าช่วย Log in or register to post comments Java ไม่มี Value Type ที่ mr_tawan Mon, 09/05/2011 - 12:37 Java ไม่มี Value Type ที่ User สร้างเองได้ครับ ถ้าเทียบกับ C# นะ เขาตัด Feature ที่ดูแล้วซ้ำซ้อน ไม่มีความจำเป็น ทิ้งได้ก็ทิ้ง เพื่อให้เป็นภาษาที่เรียบง่ายและเข้าใจได้ง่ายครับ Performance เป็นเรื่องรอง (ถ้ามันคอขาดบาดตายจริง ก็เขียน Native Code แล้วต่อด้วย JNI) Log in or register to post comments มันเป็นงานอะไรถึงขนาดใช้ ico Mon, 09/05/2011 - 18:32 มันเป็นงานอะไรถึงขนาดใช้ class แทน struct แล้วมันมีค่าใช้จ่ายเพิ่มขึ้นในจำนวนที่รับไม่ได้ครับ ถ้าบอกได้นะครับ Log in or register to post comments แนะนำให้ จขกท. อ่าน Effective mr_tawan Mon, 09/05/2011 - 19:16 แนะนำให้ จขกท. อ่าน Effective Java ที่เขียนโดยคุณมารดาของ Java 'Joshua Bloch' โดยด่วน Log in or register to post comments ส่วนตัว ผมเห็นด้วยกับคุณ wasanchai Tue, 10/05/2011 - 17:15 ส่วนตัว ผมเห็นด้วยกับคุณ Thaina เขาก็มาถามดีๆ ผมว่าไม่แรง ถ้าคุยกันด้วยเหตุผล และไม่ควรไป ban เขาด้วยคุณ lew ควรพิจารณาตัวเองครับ ผมว่าคุณ lew ทำเพื่อความสะใจมากกว่า ถ้าจะ ban ผมอีกคนก็ไม่ว่าครับ ขอบคุณครับ Log in or register to post comments แรงนะครับ.. mossila Wed, 11/05/2011 - 12:11 In reply to ส่วนตัว ผมเห็นด้วยกับคุณ by wasanchai แรงนะครับ.. Log in or register to post comments ผมว่าที่ถูกแบนก็เพราะว่าพูดจา mr_tawan Wed, 11/05/2011 - 14:12 In reply to ส่วนตัว ผมเห็นด้วยกับคุณ by wasanchai ผมว่าที่ถูกแบนก็เพราะว่าพูดจาเข้าข่ายดูถูกคนอื่นน่ะครับ ไม่มั่นใจเหมือนกัน รอคุณ ๆ ทั้งสองมาแถลงอีกที Log in or register to post comments เท่าๆที่อ่านไอ้ที่เขาดูถูกก็ม Tg Wed, 11/05/2011 - 18:12 In reply to ผมว่าที่ถูกแบนก็เพราะว่าพูดจา by mr_tawan เท่าๆที่อ่านไอ้ที่เขาดูถูกก็มีแค่.... java ? แล้วที่เขาเหวี่ยงนิดๆหน่อยก็สมเหตุสมผลด้วย เพราะว่าไอ้ที่บ่นๆน่ะเพราะว่าแต่ละคำตอบก็คือ "ทนๆไปเถอะ ก็จาวามันเป็นแบบเนี้ย", กับ "มันจะมีผลอะไรมาก". ทั้งที่เขาก็บอกเหตุผลมาแล้วว่าทำไมต้อง optimize ถึงลูกถึงคนขนาดนั้น.... ปล. ผมสาวกไพธอน ถึงจะกินแรมแต่ก็รักนะ Log in or register to post comments ไปตายเอาดาบหน้า กากส์ เร็วส์ nidlittle Wed, 11/05/2011 - 18:45 In reply to ส่วนตัว ผมเห็นด้วยกับคุณ by wasanchai ไปตายเอาดาบหน้า กากส์ เร็วส์ แดกทรัพยากร สาวกยังไงก็เปนสาวกจริงๆ ขอบคุณครับ ที่ทำให้ผมได้ซาบซึ้งกับคำว่าสาวกอีกครั้งหนึ่ง ผมว่าแรงอยู่นะ Log in or register to post comments อืม ผมอ่านตกคำว่า แ_กทรัพยากร mr_tawan Wed, 11/05/2011 - 18:58 In reply to ไปตายเอาดาบหน้า กากส์ เร็วส์ by nidlittle อืม ผมอ่านตกคำว่า แ_กทรัพยากร ไปได้ไงหว่า ?? Log in or register to post comments ถ้าให้เดาผมว่าโดนเพราะคำนี้นะ lancaster Wed, 11/05/2011 - 20:15 In reply to อืม ผมอ่านตกคำว่า แ_กทรัพยากร by mr_tawan ถ้าให้เดาผมว่าโดนเพราะคำนี้นะครับ เพราะรู้สึกท่านไทนาเคยโดนเตือนเรื่องคำหยาบไปหลายทีแล้ว Log in or register to post comments
ปกติผมใช้ class ครับ lancaster Sat, 07/05/2011 - 01:18 ปกติผมใช้ class ครับ Log in or register to post comments
บางทีมันจะมีเหตุการณ์ไม่ปกติค Thaina Sat, 07/05/2011 - 01:45 In reply to ปกติผมใช้ class ครับ by lancaster บางทีมันจะมีเหตุการณ์ไม่ปกติครับ เช่น ต้องการให้มัน Copy by Value ทั้งคลาส อยากสร้าง Array ที่มัน Packed ต้องการ Performance ไม่ต้องการ indirection ไม่อยากเช็ค null ฯลฯ Log in or register to post comments
ข้อแรกก็ .clone() lancaster Sat, 07/05/2011 - 03:49 In reply to บางทีมันจะมีเหตุการณ์ไม่ปกติค by Thaina ข้อแรกก็ .clone() เอาได้นี่ครับ ส่วนเรื่อง performance ถ้าคุณซีเรียสจุดนี้ ผมว่าไม่เหมาะตั้งแต่เขียน java แล้วล่ะครับ lol ข้ออื่นๆ ผมไม่ทราบ ต้องให้เซียนชวามาตอบ Log in or register to post comments
อย่าไปแคร์ Performance JavaDevil Sat, 07/05/2011 - 03:47 อย่าไปแคร์ Performance มากมายครับ คุณไม่ต้อง Optimize ในรายละเอียด เขียนตาม best practice ของ java ก็น่าจะทำให้ performance อยู่ในเกนณ์ที่รับได้นะครับ ผมเชื่อว่า ใช้ Class แทน struct ก็ไม่ได้ช้าลงมากมายครับ Log in or register to post comments
+1 rulaz07 Sat, 07/05/2011 - 14:39 In reply to อย่าไปแคร์ Performance by JavaDevil +1 Log in or register to post comments
ตอนนี้ผมใช้ GAE ครับ Thaina Sat, 07/05/2011 - 14:54 In reply to อย่าไปแคร์ Performance by JavaDevil ตอนนี้ผมใช้ GAE ครับ ยังฟรีอยู่ แต่ถ้าเกิดมีคนใช้มากๆ ก็กิน CPU Time ถ้าเกินก็ต้องเริ่มซื้อ Package และมันก็คิดตาม CPU Time ที่มากขึ้นด้วย Performance เปนเงินเปนทองครับ Log in or register to post comments
ถ้าใช้ structure ไม่ได้นี่ UltimaWeapon Sat, 07/05/2011 - 09:22 ถ้าใช้ structure ไม่ได้นี่ เป็นภาษาที่ไม่ซัพพอร์ท data structure ระดับ binary เลย ภาษาหลายตัวผมก็เห็นใช้ได้นะ เช่น C#, Perl Log in or register to post comments
struct มันผิดหลักการ OOP boykeng Sat, 07/05/2011 - 10:19 struct มันผิดหลักการ OOP หน่ะครับ ไม่ต้องห่วงเรื่องความเร็ว Log in or register to post comments
ฟังดูน่าสนใจ struct Thaina Sat, 07/05/2011 - 15:13 In reply to struct มันผิดหลักการ OOP by boykeng ฟังดูน่าสนใจ struct มันผิดหลักการ OOP อย่างไรครับ? ในเมื่อ Java ก็ยังต้องมี Primitive และ C# ก็มี struct ให้ใช้ ก็ยังเปน OOP ได้ ถ้าบอกว่า struct มันผิดหลักการ OOP แล้ว struct ใน C# ทำให้ C# ผิดหลักการ OOP อย่างไรได้บ้างครับ? Primitive ใน Java ทำให้ Java ผิดหลักการ OOP อย่างไรบ้างครับ? ถ้าผมจำไม่ผิด หลักการ OOP ก็จะมีหลักการของ Value Type อยู่ด้วยนะครับ Log in or register to post comments
การผิดหลักการ OOP เล็กๆ น้อยๆ nant Sat, 07/05/2011 - 15:18 In reply to ฟังดูน่าสนใจ struct by Thaina การผิดหลักการ OOP เล็กๆ น้อยๆ เช่น Primitive type ทำเพื่อความสะดวก สบาย Log in or register to post comments
แล้วมันผิดหลักการ OOP Tg Wed, 11/05/2011 - 11:34 In reply to การผิดหลักการ OOP เล็กๆ น้อยๆ by nant แล้วมันผิดหลักการ OOP ตรงไหนเหรอครับ.... Log in or register to post comments
ผิดที่ primitive types nant Thu, 12/05/2011 - 20:20 In reply to แล้วมันผิดหลักการ OOP by Tg ผิดที่ primitive types ไม่มีคณสมบัติเป็นวัตถุไงครับ Log in or register to post comments
ไม่มีครับ nant Sat, 07/05/2011 - 15:16 ไม่มีครับ ถ้าให้เหมือนที่สุดคือ class ที่ไม่มี method แล้วถ้าจำไม่ผิด c ก็ไม่มี packed array เช่นกัน หรือคำว่า packed array ของคุณ thaina หมายถึง a[n]? Log in or register to post comments
สงสัยผมเรียกผิด หมายถึง อย่าง Thaina Sat, 07/05/2011 - 15:33 In reply to ไม่มีครับ by nant สงสัยผมเรียกผิด หมายถึง อย่าง byte[] A = new byte[X] ธรรมดานี่แหละครับ ก็คือ มันจอง memory ตรงๆ ขนาด X byte ไม่ใช่จอง address ไปที่ byte อีกที น่ะครับ Log in or register to post comments
จอง memory กับ จอง address JavaDevil Sat, 07/05/2011 - 18:05 In reply to สงสัยผมเรียกผิด หมายถึง อย่าง by Thaina จอง memory กับ จอง address มันต่างกันตรงไหนครับ? Log in or register to post comments
ต่างกันแบบ Byte[] B = new Thaina Sat, 07/05/2011 - 18:43 In reply to จอง memory กับ จอง address by JavaDevil ต่างกันแบบ Byte[] B = new Byte[4]; //Array ขนาด 4 object แต่ละ object ต้อง new Byte() กับ byte[] B = new byte[4]; //Array ขนาด 4 byte น่ะครับ Log in or register to post comments
ผมว่า ขนาดผมว่า JavaDevil Sun, 08/05/2011 - 00:08 In reply to ต่างกันแบบ Byte[] B = new by Thaina ผมว่า ขนาดผมว่า มันเพิ่มต่างกันไม่เยอะหลอกครับ ^^ Log in or register to post comments
ปกติ reference to object Thaina Sun, 08/05/2011 - 00:37 In reply to ผมว่า ขนาดผมว่า by JavaDevil ปกติ reference to object น่าจะขนาด 4 byte ถ้ามี object ขนาด 4 byte (เช่น IPAddress) C# จอง Array struct รองรับ 256 connection == 1024 byte ก็ 1 KB + 4 byte(object array) Java จอง Array class รองรับ 256 connection == 1024 byte ก็ 1 KB + จองข้อมูลกระจายใน Heap อีก 256 ตัว == 1 KB รวม 2 KB + 4 byte(object array) struct ทั่วไปใน C# ขนาดของมันอยู่ในช่วงเฉลี่ย 4 - 16 byte ที่ใหญ่จริงๆและมีคนใช้ประจำคือ 64 byte (Matrix) Java ต่างกันไม่เยอะหรอกครับ แค่กินเมมมากขึ้นประมาณ ร้อยละ 50 กว่าที่ควรจะเปน แค่นั้นเอง ยังไม่นับ Performance ที่เสียไป จากการ indirection โสตหนึ่ง จากการ allocate heap บ่อยๆ ทำให้เกิดช่องโหว่กระจายใน memory อีกโสตหนึ่ง จากการที่ต้องให้ GC ดูแล object เล็กๆน้อยๆ เหล่านี้ ที่บางครั้งใช้งานแค่ครั้งเดียว อีกโสตหนึ่ง Log in or register to post comments
เป็นข้อแตกต่าง(เสีย?)ของ Java McKay Sun, 08/05/2011 - 00:51 เป็นข้อแตกต่าง(เสีย?)ของ Java ครับ ปรับตัว ไม่ก็เลิกใช้ น่าจะเป็นสองวิธีที่ดีที่สุด เพราะ Java ไม่ใช่ C# และ C# ก็ไม่ใช่ Java ครับ Log in or register to post comments
คุณ thaina ไปดู benmark nant Sun, 08/05/2011 - 02:09 คุณ thaina ไปดู benmark ระหว่าง C# กับ JAVA สิครับ ในหลายๆการทดลอง JAVA เป็นรอง C++ เล็กน้อย สูสีกับ C# เลยทีเดียว ผมเข้าใจว่าคุณ thaina นิยม C# ซึ่งก็ไม่ผิดอะไรที่จะมีภาษาที่ชื่นชอบเป็นพิเศษ ทำให้มองภาษาที่เป็นคู่แข่งกันลบไปหน่อย (ผมเองก็แฟนบอย C++ ผมยังมอง D ในแง่ลบเลย แต่ผมก็เขียนได้นั่นแหละ) อะนี่ครับ C# vs java Log in or register to post comments
เปล่าเลยครับ Thaina Sun, 08/05/2011 - 02:42 In reply to คุณ thaina ไปดู benmark by nant เปล่าเลยครับ มันไม่เกี่ยวหรอกว่าผมนิยมอะไร แต่มันถึงจุดที่ มันคือสิ่งที่ควรจะต้องใช้แต่กลับไม่มีให้ใช้ ต่างหาก Benchmark ในหลายๆการทดลอง มันก็คือ Field ที่ ผมไม่ได้ใช้ในเวลานี้(และคงไม่ต้องใช้) และอีกหลายๆการทดลองที่ Benchmark มันแพ้รูดมหาราช ดันอยู่ใน Field ที่ผมกำลังอยากจะใช้ ซึ่งผมคงไม่ต้องมาทนฝืนใช้ ถ้าหากไม่ใช่เพราะอยู่ใน Platform ที่มันบังคับ บอกอีกทีว่าผมกำลังใช้ GAE ซึ่งถ้าไม่ใช่ Java ก็ต้อง Python และจากกระทู้นี้ก็ทำให้ผมตัดสินใจได้ว่า ถ้าใช้ GAE ต่อไป ควรจะไปตายเอาดาบหน้ากับ Python ดีกว่า ไม่น่าเลือกเสี่ยงกับ Java แค่เพราะเห็นว่าเคยใช้มาบ้างเลย Java มันก็รู้ทั้งรู้ ว่าตัวเองพยายามจะให้ทุกคนใช้ตัวเองในทุกๆที่ ทั้งมือถือทั้งอะไรที่ Spec ต่ำต้อย หรืองานหนักๆอย่าง Graphic หรือคำนวนวิทยาศาสตร์ แต่กลับพยายามตัดฟีเจอร์ที่มีผลกับ Performance ออกหมด แล้วมาบอกให้โปรแกรมเมอร์ทนเอา ตั้งแต่สมัยที่ผมไม่คิดจะอวย C# ผมก็ยังคิดว่า Java กากส์ และตอนนี้ยิ่งมั่นใจ ว่าใครที่พูดว่า Java เร็วส์ คนนั้นกำลังหลอกลวงคนฟัง ตั้งกระทู้นี้มาผมก็ตั้งใจจริงๆนะ ว่ามีใครจะบอกว่า Java มันมีวิธี Optimize กันบ้างหรือไม่ เอาจริงๆผมก็เห็นพวกเว็บต่างประเทศ เขาก็มีแนะนำให้ใช้ BitBuffer (ที่มาถามเพราะเผื่อใครจะมีเทคนิคอะไรดีกว่านั้น) ซึ่งจริงๆมันก็คือทำ Array ของ struct แบบปลอมๆ แต่ประสิทธิภาพก็ยังต่ำกว่านิดหน่อย แถมความง่ายในการใช้งานต่างกันหลายขุม คนที่เผยแพร่วิธีนี้บอกว่า ต้องออปติไมซ์โปรแกรมใน Server เพราะ Java แดกทรัพยากรมากเกินไป พอเอาวิธีนี้มาใช้ ก็ดีขึ้นมาหลายเท่า สรุปคือ Java มันตัดฟีเจอร์ดีๆออก "เพราะอยากให้คนใช้งานได้ง่าย" แต่พอถึงขั้นที่ยังไงๆ ก็ต้องใช้ กลายเปนคนใช้ต้องเล่นท่ายาก แถมก็ไม่ได้เรื่องเท่าภาษาอื่นเขา Java ควรจะละอายแก่ใจบ้างนะครับ ว่าเกิดมาก่อนกี่ปีแล้ว เอามาอวดว่า ตั้งหลาย Benchmark ที่สูสีกับ C# น่าภูมิใจตรงไหนเนี่ย สรุปก็แค่ขี้เกียจแก้ JVM ให้มันรองรับ struct ดีแต่กินบุญเก่า แล้วก็อ้างข้างๆคูๆไปเรื่อย งานไม่ต้องมี Performance บ้างล่ะ (มือถือล่ะ?) รักษา OOP บ้างล่ะ (สุดท้ายก็ต้องมี Primitive อยู่ดี ก่อนหน้านี้ก็จำใจต้องเพิ่ม long เข้าในระบบ) แล้วก็มาช่วยกันออกรับแทน ไม่แย่ขนาดนั้นหรอก ไม่ต้องใช้หรอก สาวกยังไงก็เปนสาวกจริงๆ ขอพูดอย่างสุดท้ายว่า ผมเห็น Java มันก็พัฒนาอะไรๆ ตามคำเรียกร้องของคนใช้ OpenJDK มี Mailing List แต่ในเมื่อมีแต่ผู้ใช้สาวกแบบนี้ SUN พูดว่าไม่ต้องใช้ struct ก็ชาบูว่า ดีแล้วๆ ไม่ต้องใช้ๆ แล้วก็มาปลอบกันเอง "Performance ไม่ดี? ไม่ต้องห่วงๆ Java ไม่ห่วง Performance เขียนไปตามแนวคิดเขาก็พอ" ชาติหน้าก็คงไม่มีให้ใช้ Performance ห่วยยังไงก็ได้ เพราะมันคือ Java ขอบคุณครับ ที่ทำให้ผมได้ซาบซึ้งกับคำว่าสาวกอีกครั้งหนึ่ง Log in or register to post comments
การทำ packed struct เป็นการ lew Sun, 08/05/2011 - 04:33 In reply to เปล่าเลยครับ by Thaina การทำ packed struct เป็นการ "ลด" performance ครับ แม้แต่ภาษา C ก็ไม่แนะนำให้ทำ ถ้าไม่มีความต้องการพิเศษเช่นการทำ binary compatible การทำ VM ของทุกคนติดเพดานความเร็ว CPU ทั้งสิ้น ไม่มีใครสามารถทำ VM ให้เร็วกว่าความเร็ว CPU ได้ตัว Java เองมี JIT มาล่วงหน้าหลายปี ทำความเร็ว raw throughput ได้ใกล้เคียง CPU ในหลายๆ กรณี ถ้า VM อื่นๆ จะตามมาใกล้ ก็ไม่รู้จะหนีไปไหนครับ รอบนี้ผมถือว่าคุณ "ลองของ" ผมที่พยายามใช้คำไม่สุภาพหลังจากผมแบนคุณไปหนึ่งสัปดาห์แล้ว แบนหนึ่งเดือนครับ และนี่เป็นรอบสุดท้ายก่อนแบนถาวร Log in or register to post comments
ผมเข้าใจว่าผมกำลังคุยเรื่องวิ nant Sun, 08/05/2011 - 12:04 In reply to เปล่าเลยครับ by Thaina ผมเข้าใจว่าผมกำลังคุยเรื่องวิชาการนะครับ คุณ thaina สงสัยเรื่อง performance ก็ต้องวัดกันสิครับ ว่าเทียบกันแล้วเป็นอย่างไร การที่ไม่มี struct ทำให้ประสิทธิภาพตกหรือเปล่า ? คำตอบคือไม่ค่อยตกเมื่อเทียบกับ C# ส่วนเร้องสาวกไม่สาวกนั้น? ผมไม่ได้ตำหนิคุณหรือเหยียดใครว่าเป็นสาวกแล้วไม่ดี เพราะผมก็สาวก C/C++ นั่นแหละครับ ผมไม่ได้ออกรับแทนจาวา (คุณน่าจะรู้ว่าสาวกภาษาเนทีฟมีมุมมองอย่างไรกับ ภาษาบน VM นะ) ผมแค่ต้องการคุยกับคุณ เรื่องจาวา Log in or register to post comments
ตอบ จขกท ... ทำ class vavar Sun, 08/05/2011 - 17:00 ตอบ จขกท ... ทำ class ปกติ แต่ไม่ต้องใช้ method แล้ว reference แบบ package-protected (define แบบไม่ใส่ public/private/protect) หรือถ้าจะให้ advanced กว่านี้ รอ java7 ครับ ... Log in or register to post comments
ลองสร้าง Annotation ไปกำกับ vittee Mon, 09/05/2011 - 10:08 ลองสร้าง Annotation ไปกำกับ Class ให้มีพฤติกรรมคล้ายๆ struct พอจะได้มั๊ยครับ ทำคล้ายๆเวลาจะกำหนด struct alignment บน C# นะครับ หรือไม่ก็ ใช้พวก Serialize/Externalize Interface เข้าช่วย Log in or register to post comments
Java ไม่มี Value Type ที่ mr_tawan Mon, 09/05/2011 - 12:37 Java ไม่มี Value Type ที่ User สร้างเองได้ครับ ถ้าเทียบกับ C# นะ เขาตัด Feature ที่ดูแล้วซ้ำซ้อน ไม่มีความจำเป็น ทิ้งได้ก็ทิ้ง เพื่อให้เป็นภาษาที่เรียบง่ายและเข้าใจได้ง่ายครับ Performance เป็นเรื่องรอง (ถ้ามันคอขาดบาดตายจริง ก็เขียน Native Code แล้วต่อด้วย JNI) Log in or register to post comments
มันเป็นงานอะไรถึงขนาดใช้ ico Mon, 09/05/2011 - 18:32 มันเป็นงานอะไรถึงขนาดใช้ class แทน struct แล้วมันมีค่าใช้จ่ายเพิ่มขึ้นในจำนวนที่รับไม่ได้ครับ ถ้าบอกได้นะครับ Log in or register to post comments
แนะนำให้ จขกท. อ่าน Effective mr_tawan Mon, 09/05/2011 - 19:16 แนะนำให้ จขกท. อ่าน Effective Java ที่เขียนโดยคุณมารดาของ Java 'Joshua Bloch' โดยด่วน Log in or register to post comments
ส่วนตัว ผมเห็นด้วยกับคุณ wasanchai Tue, 10/05/2011 - 17:15 ส่วนตัว ผมเห็นด้วยกับคุณ Thaina เขาก็มาถามดีๆ ผมว่าไม่แรง ถ้าคุยกันด้วยเหตุผล และไม่ควรไป ban เขาด้วยคุณ lew ควรพิจารณาตัวเองครับ ผมว่าคุณ lew ทำเพื่อความสะใจมากกว่า ถ้าจะ ban ผมอีกคนก็ไม่ว่าครับ ขอบคุณครับ Log in or register to post comments
แรงนะครับ.. mossila Wed, 11/05/2011 - 12:11 In reply to ส่วนตัว ผมเห็นด้วยกับคุณ by wasanchai แรงนะครับ.. Log in or register to post comments
ผมว่าที่ถูกแบนก็เพราะว่าพูดจา mr_tawan Wed, 11/05/2011 - 14:12 In reply to ส่วนตัว ผมเห็นด้วยกับคุณ by wasanchai ผมว่าที่ถูกแบนก็เพราะว่าพูดจาเข้าข่ายดูถูกคนอื่นน่ะครับ ไม่มั่นใจเหมือนกัน รอคุณ ๆ ทั้งสองมาแถลงอีกที Log in or register to post comments
เท่าๆที่อ่านไอ้ที่เขาดูถูกก็ม Tg Wed, 11/05/2011 - 18:12 In reply to ผมว่าที่ถูกแบนก็เพราะว่าพูดจา by mr_tawan เท่าๆที่อ่านไอ้ที่เขาดูถูกก็มีแค่.... java ? แล้วที่เขาเหวี่ยงนิดๆหน่อยก็สมเหตุสมผลด้วย เพราะว่าไอ้ที่บ่นๆน่ะเพราะว่าแต่ละคำตอบก็คือ "ทนๆไปเถอะ ก็จาวามันเป็นแบบเนี้ย", กับ "มันจะมีผลอะไรมาก". ทั้งที่เขาก็บอกเหตุผลมาแล้วว่าทำไมต้อง optimize ถึงลูกถึงคนขนาดนั้น.... ปล. ผมสาวกไพธอน ถึงจะกินแรมแต่ก็รักนะ Log in or register to post comments
ไปตายเอาดาบหน้า กากส์ เร็วส์ nidlittle Wed, 11/05/2011 - 18:45 In reply to ส่วนตัว ผมเห็นด้วยกับคุณ by wasanchai ไปตายเอาดาบหน้า กากส์ เร็วส์ แดกทรัพยากร สาวกยังไงก็เปนสาวกจริงๆ ขอบคุณครับ ที่ทำให้ผมได้ซาบซึ้งกับคำว่าสาวกอีกครั้งหนึ่ง ผมว่าแรงอยู่นะ Log in or register to post comments
อืม ผมอ่านตกคำว่า แ_กทรัพยากร mr_tawan Wed, 11/05/2011 - 18:58 In reply to ไปตายเอาดาบหน้า กากส์ เร็วส์ by nidlittle อืม ผมอ่านตกคำว่า แ_กทรัพยากร ไปได้ไงหว่า ?? Log in or register to post comments
ถ้าให้เดาผมว่าโดนเพราะคำนี้นะ lancaster Wed, 11/05/2011 - 20:15 In reply to อืม ผมอ่านตกคำว่า แ_กทรัพยากร by mr_tawan ถ้าให้เดาผมว่าโดนเพราะคำนี้นะครับ เพราะรู้สึกท่านไทนาเคยโดนเตือนเรื่องคำหยาบไปหลายทีแล้ว Log in or register to post comments
ปกติผมใช้ class ครับ
lancaster Sat, 07/05/2011 - 01:18
ปกติผมใช้ class ครับ
บางทีมันจะมีเหตุการณ์ไม่ปกติค
Thaina Sat, 07/05/2011 - 01:45
In reply to ปกติผมใช้ class ครับ by lancaster
บางทีมันจะมีเหตุการณ์ไม่ปกติครับ เช่น
ข้อแรกก็ .clone()
lancaster Sat, 07/05/2011 - 03:49
In reply to บางทีมันจะมีเหตุการณ์ไม่ปกติค by Thaina
ข้อแรกก็ .clone() เอาได้นี่ครับ ส่วนเรื่อง performance ถ้าคุณซีเรียสจุดนี้ ผมว่าไม่เหมาะตั้งแต่เขียน java แล้วล่ะครับ lol
ข้ออื่นๆ ผมไม่ทราบ ต้องให้เซียนชวามาตอบ
อย่าไปแคร์ Performance
JavaDevil Sat, 07/05/2011 - 03:47
อย่าไปแคร์ Performance มากมายครับ คุณไม่ต้อง Optimize ในรายละเอียด เขียนตาม best practice ของ java ก็น่าจะทำให้ performance อยู่ในเกนณ์ที่รับได้นะครับ ผมเชื่อว่า ใช้ Class แทน struct ก็ไม่ได้ช้าลงมากมายครับ
+1
rulaz07 Sat, 07/05/2011 - 14:39
In reply to อย่าไปแคร์ Performance by JavaDevil
+1
ตอนนี้ผมใช้ GAE ครับ
Thaina Sat, 07/05/2011 - 14:54
In reply to อย่าไปแคร์ Performance by JavaDevil
ตอนนี้ผมใช้ GAE ครับ ยังฟรีอยู่
แต่ถ้าเกิดมีคนใช้มากๆ ก็กิน CPU Time ถ้าเกินก็ต้องเริ่มซื้อ Package และมันก็คิดตาม CPU Time ที่มากขึ้นด้วย
Performance เปนเงินเปนทองครับ
ถ้าใช้ structure ไม่ได้นี่
UltimaWeapon Sat, 07/05/2011 - 09:22
ถ้าใช้ structure ไม่ได้นี่ เป็นภาษาที่ไม่ซัพพอร์ท data structure ระดับ binary เลย ภาษาหลายตัวผมก็เห็นใช้ได้นะ เช่น C#, Perl
struct มันผิดหลักการ OOP
boykeng Sat, 07/05/2011 - 10:19
struct มันผิดหลักการ OOP หน่ะครับ
ไม่ต้องห่วงเรื่องความเร็ว
ฟังดูน่าสนใจ struct
Thaina Sat, 07/05/2011 - 15:13
In reply to struct มันผิดหลักการ OOP by boykeng
ฟังดูน่าสนใจ struct มันผิดหลักการ OOP อย่างไรครับ?
ในเมื่อ Java ก็ยังต้องมี Primitive และ C# ก็มี struct ให้ใช้ ก็ยังเปน OOP ได้
ถ้าบอกว่า struct มันผิดหลักการ OOP
แล้ว struct ใน C# ทำให้ C# ผิดหลักการ OOP อย่างไรได้บ้างครับ?
Primitive ใน Java ทำให้ Java ผิดหลักการ OOP อย่างไรบ้างครับ?
ถ้าผมจำไม่ผิด หลักการ OOP ก็จะมีหลักการของ Value Type อยู่ด้วยนะครับ
การผิดหลักการ OOP เล็กๆ น้อยๆ
nant Sat, 07/05/2011 - 15:18
In reply to ฟังดูน่าสนใจ struct by Thaina
การผิดหลักการ OOP เล็กๆ น้อยๆ เช่น Primitive type ทำเพื่อความสะดวก สบาย
แล้วมันผิดหลักการ OOP
Tg Wed, 11/05/2011 - 11:34
In reply to การผิดหลักการ OOP เล็กๆ น้อยๆ by nant
แล้วมันผิดหลักการ OOP ตรงไหนเหรอครับ....
ผิดที่ primitive types
nant Thu, 12/05/2011 - 20:20
In reply to แล้วมันผิดหลักการ OOP by Tg
ผิดที่ primitive types ไม่มีคณสมบัติเป็นวัตถุไงครับ
ไม่มีครับ
nant Sat, 07/05/2011 - 15:16
ไม่มีครับ ถ้าให้เหมือนที่สุดคือ class ที่ไม่มี method
แล้วถ้าจำไม่ผิด c ก็ไม่มี packed array เช่นกัน
หรือคำว่า packed array ของคุณ thaina หมายถึง a[n]?
สงสัยผมเรียกผิด หมายถึง อย่าง
Thaina Sat, 07/05/2011 - 15:33
In reply to ไม่มีครับ by nant
สงสัยผมเรียกผิด หมายถึง อย่าง byte[] A = new byte[X] ธรรมดานี่แหละครับ
ก็คือ มันจอง memory ตรงๆ ขนาด X byte ไม่ใช่จอง address ไปที่ byte อีกที น่ะครับ
จอง memory กับ จอง address
JavaDevil Sat, 07/05/2011 - 18:05
In reply to สงสัยผมเรียกผิด หมายถึง อย่าง by Thaina
จอง memory กับ จอง address มันต่างกันตรงไหนครับ?
ต่างกันแบบ Byte[] B = new
Thaina Sat, 07/05/2011 - 18:43
In reply to จอง memory กับ จอง address by JavaDevil
ต่างกันแบบ
Byte[] B = new Byte[4]; //Array ขนาด 4 object แต่ละ object ต้อง new Byte()
กับ
byte[] B = new byte[4]; //Array ขนาด 4 byte
น่ะครับ
ผมว่า ขนาดผมว่า
JavaDevil Sun, 08/05/2011 - 00:08
In reply to ต่างกันแบบ Byte[] B = new by Thaina
ผมว่า ขนาดผมว่า มันเพิ่มต่างกันไม่เยอะหลอกครับ ^^
ปกติ reference to object
Thaina Sun, 08/05/2011 - 00:37
In reply to ผมว่า ขนาดผมว่า by JavaDevil
ปกติ reference to object น่าจะขนาด 4 byte
ถ้ามี object ขนาด 4 byte (เช่น IPAddress)
struct ทั่วไปใน C# ขนาดของมันอยู่ในช่วงเฉลี่ย 4 - 16 byte
ที่ใหญ่จริงๆและมีคนใช้ประจำคือ 64 byte (Matrix)
Java ต่างกันไม่เยอะหรอกครับ แค่กินเมมมากขึ้นประมาณ ร้อยละ 50 กว่าที่ควรจะเปน แค่นั้นเอง
ยังไม่นับ Performance ที่เสียไป
เป็นข้อแตกต่าง(เสีย?)ของ Java
McKay Sun, 08/05/2011 - 00:51
เป็นข้อแตกต่าง(เสีย?)ของ Java ครับ
ปรับตัว ไม่ก็เลิกใช้ น่าจะเป็นสองวิธีที่ดีที่สุด
เพราะ Java ไม่ใช่ C# และ C# ก็ไม่ใช่ Java ครับ
คุณ thaina ไปดู benmark
nant Sun, 08/05/2011 - 02:09
เปล่าเลยครับ
Thaina Sun, 08/05/2011 - 02:42
In reply to คุณ thaina ไปดู benmark by nant
เปล่าเลยครับ มันไม่เกี่ยวหรอกว่าผมนิยมอะไร
แต่มันถึงจุดที่ มันคือสิ่งที่ควรจะต้องใช้แต่กลับไม่มีให้ใช้ ต่างหาก
Benchmark ในหลายๆการทดลอง มันก็คือ Field ที่ ผมไม่ได้ใช้ในเวลานี้(และคงไม่ต้องใช้)
และอีกหลายๆการทดลองที่ Benchmark มันแพ้รูดมหาราช ดันอยู่ใน Field ที่ผมกำลังอยากจะใช้
ซึ่งผมคงไม่ต้องมาทนฝืนใช้ ถ้าหากไม่ใช่เพราะอยู่ใน Platform ที่มันบังคับ
บอกอีกทีว่าผมกำลังใช้ GAE ซึ่งถ้าไม่ใช่ Java ก็ต้อง Python
และจากกระทู้นี้ก็ทำให้ผมตัดสินใจได้ว่า ถ้าใช้ GAE ต่อไป ควรจะไปตายเอาดาบหน้ากับ Python ดีกว่า
ไม่น่าเลือกเสี่ยงกับ Java แค่เพราะเห็นว่าเคยใช้มาบ้างเลย
Java มันก็รู้ทั้งรู้ ว่าตัวเองพยายามจะให้ทุกคนใช้ตัวเองในทุกๆที่
ทั้งมือถือทั้งอะไรที่ Spec ต่ำต้อย หรืองานหนักๆอย่าง Graphic หรือคำนวนวิทยาศาสตร์
แต่กลับพยายามตัดฟีเจอร์ที่มีผลกับ Performance ออกหมด แล้วมาบอกให้โปรแกรมเมอร์ทนเอา
ตั้งแต่สมัยที่ผมไม่คิดจะอวย C# ผมก็ยังคิดว่า Java กากส์
และตอนนี้ยิ่งมั่นใจ ว่าใครที่พูดว่า Java เร็วส์ คนนั้นกำลังหลอกลวงคนฟัง
ตั้งกระทู้นี้มาผมก็ตั้งใจจริงๆนะ ว่ามีใครจะบอกว่า Java มันมีวิธี Optimize กันบ้างหรือไม่
เอาจริงๆผมก็เห็นพวกเว็บต่างประเทศ เขาก็มีแนะนำให้ใช้ BitBuffer (ที่มาถามเพราะเผื่อใครจะมีเทคนิคอะไรดีกว่านั้น)
ซึ่งจริงๆมันก็คือทำ Array ของ struct แบบปลอมๆ แต่ประสิทธิภาพก็ยังต่ำกว่านิดหน่อย แถมความง่ายในการใช้งานต่างกันหลายขุม
คนที่เผยแพร่วิธีนี้บอกว่า ต้องออปติไมซ์โปรแกรมใน Server เพราะ Java แดกทรัพยากรมากเกินไป
พอเอาวิธีนี้มาใช้ ก็ดีขึ้นมาหลายเท่า
สรุปคือ Java มันตัดฟีเจอร์ดีๆออก "เพราะอยากให้คนใช้งานได้ง่าย"
แต่พอถึงขั้นที่ยังไงๆ ก็ต้องใช้ กลายเปนคนใช้ต้องเล่นท่ายาก แถมก็ไม่ได้เรื่องเท่าภาษาอื่นเขา
Java ควรจะละอายแก่ใจบ้างนะครับ ว่าเกิดมาก่อนกี่ปีแล้ว
เอามาอวดว่า ตั้งหลาย Benchmark ที่สูสีกับ C# น่าภูมิใจตรงไหนเนี่ย
สรุปก็แค่ขี้เกียจแก้ JVM ให้มันรองรับ struct
ดีแต่กินบุญเก่า แล้วก็อ้างข้างๆคูๆไปเรื่อย งานไม่ต้องมี Performance บ้างล่ะ (มือถือล่ะ?) รักษา OOP บ้างล่ะ (สุดท้ายก็ต้องมี Primitive อยู่ดี ก่อนหน้านี้ก็จำใจต้องเพิ่ม long เข้าในระบบ)
แล้วก็มาช่วยกันออกรับแทน ไม่แย่ขนาดนั้นหรอก ไม่ต้องใช้หรอก
สาวกยังไงก็เปนสาวกจริงๆ
ขอพูดอย่างสุดท้ายว่า
ผมเห็น Java มันก็พัฒนาอะไรๆ ตามคำเรียกร้องของคนใช้ OpenJDK มี Mailing List
แต่ในเมื่อมีแต่ผู้ใช้สาวกแบบนี้ SUN พูดว่าไม่ต้องใช้ struct ก็ชาบูว่า ดีแล้วๆ ไม่ต้องใช้ๆ
แล้วก็มาปลอบกันเอง "Performance ไม่ดี? ไม่ต้องห่วงๆ Java ไม่ห่วง Performance เขียนไปตามแนวคิดเขาก็พอ"
ชาติหน้าก็คงไม่มีให้ใช้ Performance ห่วยยังไงก็ได้ เพราะมันคือ Java
ขอบคุณครับ ที่ทำให้ผมได้ซาบซึ้งกับคำว่าสาวกอีกครั้งหนึ่ง
การทำ packed struct เป็นการ
lew Sun, 08/05/2011 - 04:33
In reply to เปล่าเลยครับ by Thaina
การทำ packed struct เป็นการ "ลด" performance ครับ แม้แต่ภาษา C ก็ไม่แนะนำให้ทำ ถ้าไม่มีความต้องการพิเศษเช่นการทำ binary compatible
การทำ VM ของทุกคนติดเพดานความเร็ว CPU ทั้งสิ้น ไม่มีใครสามารถทำ VM ให้เร็วกว่าความเร็ว CPU ได้ตัว Java เองมี JIT มาล่วงหน้าหลายปี ทำความเร็ว raw throughput ได้ใกล้เคียง CPU ในหลายๆ กรณี ถ้า VM อื่นๆ จะตามมาใกล้ ก็ไม่รู้จะหนีไปไหนครับ
รอบนี้ผมถือว่าคุณ "ลองของ" ผมที่พยายามใช้คำไม่สุภาพหลังจากผมแบนคุณไปหนึ่งสัปดาห์แล้ว
แบนหนึ่งเดือนครับ และนี่เป็นรอบสุดท้ายก่อนแบนถาวร
ผมเข้าใจว่าผมกำลังคุยเรื่องวิ
nant Sun, 08/05/2011 - 12:04
In reply to เปล่าเลยครับ by Thaina
ตอบ จขกท ... ทำ class
vavar Sun, 08/05/2011 - 17:00
ตอบ จขกท ... ทำ class ปกติ
แต่ไม่ต้องใช้ method แล้ว reference แบบ package-protected
(define แบบไม่ใส่ public/private/protect)
หรือถ้าจะให้ advanced กว่านี้ รอ java7 ครับ ...
ลองสร้าง Annotation ไปกำกับ
vittee Mon, 09/05/2011 - 10:08
ลองสร้าง Annotation ไปกำกับ Class ให้มีพฤติกรรมคล้ายๆ struct พอจะได้มั๊ยครับ ทำคล้ายๆเวลาจะกำหนด struct alignment บน C# นะครับ
หรือไม่ก็ ใช้พวก Serialize/Externalize Interface เข้าช่วย
Java ไม่มี Value Type ที่
mr_tawan Mon, 09/05/2011 - 12:37
Java ไม่มี Value Type ที่ User สร้างเองได้ครับ ถ้าเทียบกับ C# นะ
เขาตัด Feature ที่ดูแล้วซ้ำซ้อน ไม่มีความจำเป็น ทิ้งได้ก็ทิ้ง เพื่อให้เป็นภาษาที่เรียบง่ายและเข้าใจได้ง่ายครับ Performance เป็นเรื่องรอง (ถ้ามันคอขาดบาดตายจริง ก็เขียน Native Code แล้วต่อด้วย JNI)
มันเป็นงานอะไรถึงขนาดใช้
ico Mon, 09/05/2011 - 18:32
มันเป็นงานอะไรถึงขนาดใช้ class แทน struct แล้วมันมีค่าใช้จ่ายเพิ่มขึ้นในจำนวนที่รับไม่ได้ครับ
ถ้าบอกได้นะครับ
แนะนำให้ จขกท. อ่าน Effective
mr_tawan Mon, 09/05/2011 - 19:16
แนะนำให้ จขกท. อ่าน Effective Java ที่เขียนโดยคุณมารดาของ Java 'Joshua Bloch' โดยด่วน
ส่วนตัว ผมเห็นด้วยกับคุณ
wasanchai Tue, 10/05/2011 - 17:15
ส่วนตัว ผมเห็นด้วยกับคุณ Thaina เขาก็มาถามดีๆ ผมว่าไม่แรง ถ้าคุยกันด้วยเหตุผล
และไม่ควรไป ban เขาด้วยคุณ lew ควรพิจารณาตัวเองครับ ผมว่าคุณ lew ทำเพื่อความสะใจมากกว่า
ถ้าจะ ban ผมอีกคนก็ไม่ว่าครับ
ขอบคุณครับ
แรงนะครับ..
mossila Wed, 11/05/2011 - 12:11
In reply to ส่วนตัว ผมเห็นด้วยกับคุณ by wasanchai
แรงนะครับ..
ผมว่าที่ถูกแบนก็เพราะว่าพูดจา
mr_tawan Wed, 11/05/2011 - 14:12
In reply to ส่วนตัว ผมเห็นด้วยกับคุณ by wasanchai
ผมว่าที่ถูกแบนก็เพราะว่าพูดจาเข้าข่ายดูถูกคนอื่นน่ะครับ ไม่มั่นใจเหมือนกัน รอคุณ ๆ ทั้งสองมาแถลงอีกที
เท่าๆที่อ่านไอ้ที่เขาดูถูกก็ม
Tg Wed, 11/05/2011 - 18:12
In reply to ผมว่าที่ถูกแบนก็เพราะว่าพูดจา by mr_tawan
เท่าๆที่อ่านไอ้ที่เขาดูถูกก็มีแค่.... java ? แล้วที่เขาเหวี่ยงนิดๆหน่อยก็สมเหตุสมผลด้วย เพราะว่าไอ้ที่บ่นๆน่ะเพราะว่าแต่ละคำตอบก็คือ "ทนๆไปเถอะ ก็จาวามันเป็นแบบเนี้ย", กับ "มันจะมีผลอะไรมาก". ทั้งที่เขาก็บอกเหตุผลมาแล้วว่าทำไมต้อง optimize ถึงลูกถึงคนขนาดนั้น....
ปล. ผมสาวกไพธอน ถึงจะกินแรมแต่ก็รักนะ
ไปตายเอาดาบหน้า กากส์ เร็วส์
nidlittle Wed, 11/05/2011 - 18:45
In reply to ส่วนตัว ผมเห็นด้วยกับคุณ by wasanchai
ไปตายเอาดาบหน้า กากส์ เร็วส์ แดกทรัพยากร สาวกยังไงก็เปนสาวกจริงๆ ขอบคุณครับ ที่ทำให้ผมได้ซาบซึ้งกับคำว่าสาวกอีกครั้งหนึ่ง
ผมว่าแรงอยู่นะ
อืม ผมอ่านตกคำว่า แ_กทรัพยากร
mr_tawan Wed, 11/05/2011 - 18:58
In reply to ไปตายเอาดาบหน้า กากส์ เร็วส์ by nidlittle
อืม ผมอ่านตกคำว่า แ_กทรัพยากร ไปได้ไงหว่า ??
ถ้าให้เดาผมว่าโดนเพราะคำนี้นะ
lancaster Wed, 11/05/2011 - 20:15
In reply to อืม ผมอ่านตกคำว่า แ_กทรัพยากร by mr_tawan
ถ้าให้เดาผมว่าโดนเพราะคำนี้นะครับ เพราะรู้สึกท่านไทนาเคยโดนเตือนเรื่องคำหยาบไปหลายทีแล้ว