У меня есть память отображается большой отформатированный файл (текст), содержащий одно целое число в каждой строке, как так:Чтение числа из памяти, отображенных файл в формате
123
345
34324
3232
...
Итак, у меня есть указатель на память первого байта а также указатель на память в последнем байте. Я пытаюсь как можно быстрее прочитать все эти целые числа в массиве. Первоначально я создал специализированный класс std :: streambuf для работы с std :: istream для чтения из этой памяти, но, похоже, он относительно медленный.
Есть ли у вас предложения по эффективному анализу строки типа «1231232 \ r \ n123123 \ r \ n123 \ r \ n1231 \ r \ n2387897 ...» в массив {1231232,123123,1231,231 , 2387897, ...}?
Число целых чисел в файле не известно заранее.
Одной из оптимизаций может быть замена isdigit на (* p & 0xF0). – ronag
Вы забыли 'array.reserve (...)'. Снижение производительности может быть серьезным. –
@ HardCoder1986, std :: vector вырастет массив экспоненциально, так что штраф за производительность будет только log (n). В вопросе явно сказано, что число целых чисел неизвестно. Я согласен с тем, что разумная догадка может помочь. –