Название: Запись в файл / чтение из файла Отправлено: puh от Май 30, 2014, 07:55 Добрый день.
Необходимо записать в файл 70.000.000 штук 32-хбитных данных, и далее их вычитать. Делаю это следующим образом (для примера записываю просто счетчик и проверяю затраченное время): Код: int size_mass = 70000000; Так вот вопрос, можно ли сделать это все намного быстрее? Процесс записи даже не очень важен, а вот процесс чтения хочется сделать пошустрее. Название: Re: Запись в файл / чтение из файла Отправлено: OKTA от Май 30, 2014, 09:35 Попробуй обычный FILE/fopen/fclose/fputs/fgets. Попробовал у себя - работает порядочно быстрее, чем QFile :)
Название: Re: Запись в файл / чтение из файла Отправлено: puh от Май 30, 2014, 11:46 Проверил, действительно быстрее стало.
Но проблема еще не решена до конца. Дело в том, что в файле будут записываться uint32 в текстовом виде, и они могут выглядеть так: 0 1 123456 7 , т.е. каждая строка может иметь разное количество символов. В "моем первом" варианте я после вычитывания строки с помощью readLine() могу потом применить преобразование QString::toUint() и получу нужный мне uint32. А как быть во втором случае чота я не пойму, как из массивов char* с разной длиной получить uint32. ??? ??? Написав так: char *s; char ff[16]; s = fgets(ff, 16, f); я получаю s как массив char'ов, в котором находятся коды символов из строки файла, причем каждый раз разной длины. Что мне с ним сделать чтобы получить из него uint32??? Название: Re: Запись в файл / чтение из файла Отправлено: alex312 от Май 30, 2014, 12:02 я получаю s как массив char'ов, в котором находятся коды символов из строки файла, причем каждый раз разной длины. Что мне с ним сделать чтобы получить из него uint32??? std::atoi (http://en.cppreference.com/w/cpp/string/byte/atoi)Название: Re: Запись в файл / чтение из файла Отправлено: puh от Май 30, 2014, 18:55 Спасибо за подсказку, очень помогли.
|