Tag: io

5 รายการ

Blog

อิกัวนาต้นฉบับต่อหัวท่อสองอันเป็นคู่สื่อสารบนโต๊ะทดลองสีสว่าง
zigiosocket

Zig 0.16 Socket.createPair: สร้างช่องสื่อสารสองปลายสำหรับงานในโปรเซส

ทดลอง API socket pair ใหม่ใน std.Io พร้อมอธิบาย ownership, การปิด handle และจังหวะที่ควรเลือก pipe

น้องกาย
ม้วนกระดาษบนโต๊ะมิ้นต์ล้นจากถาด RAM ไปยังดิสก์สีอำพัน
pythontempfilestdlib

Python SpooledTemporaryFile: เก็บใน RAM ก่อน แล้วค่อยกลิ้งลงดิสก์เมื่อใหญ่เกิน

ใช้ tempfile.SpooledTemporaryFile เมื่อยังไม่รู้ขนาด — ตั้ง max_size แล้ว rollover() เมื่อต้องการ fileno

น้องกาย
ภาพวาดโทนมิ้นต์สว่าง อิกัวนาตัวเล็กหมุนมือหมุนสีอำพันเพื่อเลื่อนแถบกระดาษยาวผ่านช่องไม้แคบทีละท่อน อ่านเฉพาะท่อนที่อยู่ในช่องตอนนั้น
zigworkshopcli

Zig Workshop #2: อ่านไฟล์ 94 MB ด้วยแรม 1.8 MB

อ่าน log ทีละบรรทัดแบบ streaming ด้วย Io.Reader ของ Zig 0.16 — ทำไม buffer ถึงเป็นพารามิเตอร์, takeDelimiter ทำงานยังไง, จัดการบรรทัดแบบ Windows และผลวัดจริงที่ streaming ใช้แรม 1.8 MB เทียบกับอ่านทั้งไฟล์ที่ใช้ 100 MB บนไฟล์เดียวกัน

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

Zig 0.16 บทที่ 4: ทำไม I/O ต้องส่ง io ไปทุกที่ และข้อความที่เขียนไม่เหมือนเดิม

หัวใจของการเปลี่ยนแปลงใน Zig 0.16 — I/O กลายเป็นพารามิเตอร์เหมือน allocator, writer ที่คุณต้องส่ง buffer ให้เองและต้อง flush, อ่านไฟล์ทีละบรรทัดด้วย takeDelimiter, จัดการ CRLF ของ Windows และ format method ที่เปลี่ยน signature จนโค้ดเก่าใช้ไม่ได้

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

Zig Optimization #5: buffer เดียวเปลี่ยน 1,173 ms เป็น 3 ms และของที่แก้แล้วไม่ต่าง

บทปิดของชุด optimization — กราฟขนาด buffer ที่ต่างกัน 375 เท่า, ต้นทุนของ format ที่ต้องแยกให้ออกจากต้นทุน syscall และรวมทุกเคสที่ผมวัดแล้วพบว่าแก้ไปก็ไม่ดีขึ้น ซึ่งมีค่าพอ ๆ กับเคสที่ดีขึ้น

พี่โชว์