Tag: io
5 รายการ
Blog
Zig 0.16 Socket.createPair: สร้างช่องสื่อสารสองปลายสำหรับงานในโปรเซส
ทดลอง API socket pair ใหม่ใน std.Io พร้อมอธิบาย ownership, การปิด handle และจังหวะที่ควรเลือก pipe
Python SpooledTemporaryFile: เก็บใน RAM ก่อน แล้วค่อยกลิ้งลงดิสก์เมื่อใหญ่เกิน
ใช้ tempfile.SpooledTemporaryFile เมื่อยังไม่รู้ขนาด — ตั้ง max_size แล้ว rollover() เมื่อต้องการ fileno

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

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

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