คำถามติดแท็ก fstream

12
mmap () เทียบกับการอ่านบล็อค
ฉันกำลังทำงานกับโปรแกรมที่กำลังประมวลผลไฟล์ที่อาจมีขนาด 100GB ขึ้นไป ไฟล์มีชุดของบันทึกความยาวแปรผัน ฉันได้ติดตั้งและใช้งานเป็นครั้งแรกและตอนนี้ฉันกำลังมองไปที่การปรับปรุงประสิทธิภาพโดยเฉพาะอย่างยิ่งในการทำ I / O ที่มีประสิทธิภาพมากขึ้นเนื่องจากไฟล์อินพุตได้รับการสแกนหลายครั้ง มีกฎง่ายๆในการใช้mmap()กับการอ่านในบล็อกผ่านfstreamห้องสมุดของ C ++ ? สิ่งที่ฉันต้องการจะทำคืออ่านบล็อกขนาดใหญ่จากดิสก์ไปยังบัฟเฟอร์ประมวลผลระเบียนที่สมบูรณ์จากบัฟเฟอร์แล้วอ่านเพิ่มเติม mmap()รหัสอาจจะได้รับมากยุ่งตั้งแต่mmap'd บล็อกต้องนอนบนหน้าขอบเขตขนาด (ความเข้าใจของฉัน) และมีการบันทึกอาจเหมือนข้ามเขตแดนหน้า ด้วยfstreams ฉันสามารถค้นหาจุดเริ่มต้นของการบันทึกและเริ่มอ่านอีกครั้งเนื่องจากเราไม่ จำกัด เฉพาะการอ่านบล็อกที่วางอยู่บนขอบเขตขนาดหน้า ฉันจะตัดสินใจเลือกระหว่างสองตัวเลือกนี้ได้อย่างไร กฎของหัวแม่มือใด ๆ (เช่นmmap()เร็วกว่า 2x) หรือการทดสอบอย่างง่าย?
185 c++  file-io  fstream  mmap 

1
C ++: ตัวแปร 'std :: ifstream ifs' มี initializer แต่เป็นประเภทที่ไม่สมบูรณ์
ขออภัยถ้านี่ไม่ใช่เสียงค่อนข้างสวย แต่ฉันค่อนข้างใหม่กับ C ++ ฉันพยายามเปิดไฟล์และอ่านโดยใช้ifstream: vector<string> load_f(string file) { vector<string> text; ifstream ifs(file); string buffer, str_line; int brackets = 0; str_line = ""; while ( getline(ifs, buffer) ) { buffer = Trim( buffer ); size_t s = buffer.find_first_of("()"); if (s == string::npos) str_line += "" + buffer; else { while …
139 c++  fstream  return-type 

7
วิธีสร้าง c ++ fstream จากตัวอธิบายไฟล์ POSIX
โดยพื้นฐานแล้วฉันกำลังมองหา fdopen () เวอร์ชัน C ++ ฉันได้ค้นคว้าข้อมูลเล็กน้อยเกี่ยวกับเรื่องนี้และเป็นหนึ่งในสิ่งที่ดูเหมือนว่ามันควรจะง่าย แต่กลับกลายเป็นว่าซับซ้อนมาก ฉันพลาดอะไรบางอย่างในความเชื่อนี้ (คือมันง่ายจริงๆ)? ถ้าไม่มีมีห้องสมุดดีๆสักแห่งที่จัดการเรื่องนี้ได้หรือไม่? แก้ไข: ย้ายโซลูชันตัวอย่างของฉันไปยังคำตอบแยกต่างหาก

7
จะอ่านทีละบรรทัดหรือไฟล์ข้อความทั้งหมดพร้อมกันได้อย่างไร?
ฉันอยู่ในบทช่วยสอนที่แนะนำไฟล์ (วิธีอ่านและเขียนจาก \ ถึงไฟล์) ก่อนอื่นนี่ไม่ใช่การบ้านนี่เป็นเพียงความช่วยเหลือทั่วไปที่ฉันกำลังมองหา ฉันรู้วิธีอ่านทีละคำ แต่ไม่รู้วิธีอ่านทีละบรรทัดหรืออ่านไฟล์ข้อความทั้งหมดอย่างไร จะเกิดอะไรขึ้นถ้าไฟล์ของฉันมี 1,000 คำ? ไม่สามารถอ่านแต่ละคำได้ ไฟล์ข้อความของฉันชื่อ (อ่าน) มีดังต่อไปนี้: ฉันชอบเล่นเกมฉันชอบอ่านหนังสือฉันมีหนังสือ 2 เล่ม นี่คือสิ่งที่ฉันทำสำเร็จแล้ว: #include <iostream> #include <fstream> using namespace std; int main (){ ifstream inFile; inFile.open("Read.txt"); inFile >> มีวิธีใดบ้างที่เป็นไปได้ในการอ่านทั้งไฟล์พร้อมกันแทนที่จะอ่านแต่ละบรรทัดหรือแยกแต่ละคำ
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.