Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Как быстро читать большие тексовые файлы?
|
|||
|---|---|---|---|
|
#18+
Написал чудесную программу, которая читает файлы размером ~500Мб (в файле ~ 10 млн строк ). Профайлер показал, что около 2/3 времени работы занимает I/O. Поэтому я попытался оптимизировать работу, протестировав 3 варианта программы (в скобках указано время выполнения программы в два потока): 1. Классический метод С++ std::ifstream + getline() ( 161 505, 160 876 ) 2. Отображение ВСЕГО файла в память средствами Qt: QFile + QByteArray + QBuffer + Buffer.readLine() ( 273 488, 296 010 ) 3. Map- инг файла в память средствами Qt: QFile + File.map() ( 157 117, 159 959 ) Однопоточный тест дает такие же результаты (но я изначально ориентируюсь на многопоточную работу). У меня классический жесткий диск (не SSD) с буфером 64 Мб и поддержкой упреждающего чтения. Будет ли прирост производительности от SSD диска , если учесть, что на разделе очень много свободного места, а значит файлы не фрагментированы и следовательно работа идет через буфер диска? Какие еще есть хитрые способы быстрого чтения больших файлов? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2018, 12:48 |
|
||
|
Как быстро читать большие тексовые файлы?
|
|||
|---|---|---|---|
|
#18+
Тебе во первых нужно знать свое железо. И понимать где есть та верхняя граница когда стоит остановиться и не мучать софт странными пожеланиями. Померяй скорость копирования твоего файла в NULL или в /dev/null на линуксе. И отталкивайся от этого числа. Для однопоточного приложения будет формула где это время разделится на собственно I/O и работу одного раунда твоего парсера. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2018, 13:00 |
|
||
|
Как быстро читать большие тексовые файлы?
|
|||
|---|---|---|---|
|
#18+
maytonТебе во первых нужно знать свое железо. И понимать где есть та верхняя граница когда стоит остановиться и не мучать софт странными пожеланиями. Померяй скорость копирования твоего файла в NULL или в /dev/null на линуксе. И отталкивайся от этого числа. Для однопоточного приложения будет формула где это время разделится на собственно I/O и работу одного раунда твоего парсера. Выполнил замер такого куска кода (копирование с диска в оперативку и освобождение оперативки при выходе из функции): Код: plaintext 1. 2. 3. Получил время выполнения 158 836 и 165 079 мсек . Значит быстрее этих цифр на текущей связке железо + ОС я не прыгну. Тогда вопрос про SSD: будет прирост производительности при его использовании или ограничение идет на уровне интерфейса SATA? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2018, 13:25 |
|
||
|
Как быстро читать большие тексовые файлы?
|
|||
|---|---|---|---|
|
#18+
AlekseySQLВыполнил замер такого куска кода (копирование с диска в оперативку мопжежвашуять...цопи филе нуль Код: plaintext 1. 2. 3. ~110МБ/сек, что меньше ограничений SATA-1 (~150МБ/сек) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2018, 14:12 |
|
||
|
Как быстро читать большие тексовые файлы?
|
|||
|---|---|---|---|
|
#18+
Basil A. SidorovAlekseySQLВыполнил замер такого куска кода (копирование с диска в оперативку мопжежвашуять...цопи филе нуль Код: plaintext 1. 2. 3. ~110МБ/сек, что меньше ограничений SATA-1 (~150МБ/сек) Что значат ваши замеры на древнем диске- непонятно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2018, 16:01 |
|
||
|
Как быстро читать большие тексовые файлы?
|
|||
|---|---|---|---|
|
#18+
Сходил я купил этот SSD. Выложил примерно 3500 кровных. Ну что вам сказать ребятки... А все получилось! Ура!!! Теперь тест чтения файлов с диска в память и ее освобождение выполняется за 41 395 и 41 146 мсек (примерно в 4 раза быстрее)! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2018, 19:43 |
|
||
|
Как быстро читать большие тексовые файлы?
|
|||
|---|---|---|---|
|
#18+
AlekseySQLСходил я купил этот SSD. Выложил примерно 3500 кровных. Ну что вам сказать ребятки... А все получилось! Ура!!! Теперь тест чтения файлов с диска в память и ее освобождение выполняется за 41 395 и 41 146 мсек (примерно в 4 раза быстрее)! А если еще и руками сделать..... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2018, 19:49 |
|
||
|
Как быстро читать большие тексовые файлы?
|
|||
|---|---|---|---|
|
#18+
Можешь потестить мой block_read.h . Писал для быстрого чтения больших текстовых файлов. Топик тут Примеры исходников там же можешь посмотреть uniq-crc.cpp ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2018, 19:59 |
|
||
|
Как быстро читать большие тексовые файлы?
|
|||
|---|---|---|---|
|
#18+
AlekseySQLСходил я купил этот SSD. Выложил примерно 3500 кровных. Ну что вам сказать ребятки... А все получилось! Ура!!! Теперь тест чтения файлов с диска в память и ее освобождение выполняется за 41 395 и 41 146 мсек (примерно в 4 раза быстрее)! Дружище, это порочный путь. Остался пустяк... написать в Requirements, что твой софт работает только на SSD... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2018, 22:34 |
|
||
|
Как быстро читать большие тексовые файлы?
|
|||
|---|---|---|---|
|
#18+
maytonДружище, это порочный путь. Остался пустяк... написать в Requirements, что твой софт работает только на SSD... Именно поэтому я сначала тестил разные алгоритмы без покупки нового железа. Кстати, за те самые 160 секунд у меня обрабатывались текстовые файлы общим весом 16,2 ГБ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2018, 22:52 |
|
||
|
Как быстро читать большие тексовые файлы?
|
|||
|---|---|---|---|
|
#18+
AlekseySQLЧто значат ваши замеры на древнем диске- непонятно.5400rpm это уже не древний диск - вы отстали от жизни. Но главное даже не это: Код: plaintext 1. интерпретатор, заметьте Код: txt 1. 2. 3. 4. 5. 6. 7. 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2018, 22:59 |
|
||
|
Как быстро читать большие тексовые файлы?
|
|||
|---|---|---|---|
|
#18+
Basil A. Sidorov5400rpm это уже не древний диск - вы отстали от жизни. Но главное даже не это: Код: plaintext 1. интерпретатор, заметьте Код: txt 1. 2. 3. 4. 5. 6. 7. 8. Опять что- то непонятное написано... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2018, 23:34 |
|
||
|
Как быстро читать большие тексовые файлы?
|
|||
|---|---|---|---|
|
#18+
AlekseySQLОпять что- то непонятное написано...Чтение полугигабайта не должно занимать ни сто секунд, ни тридцать. Даже если у вас нет твердотельного диска. Практика показывает, что и не занимает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2018, 23:51 |
|
||
|
Как быстро читать большие тексовые файлы?
|
|||
|---|---|---|---|
|
#18+
Basil A. SidorovAlekseySQLОпять что- то непонятное написано...Чтение полугигабайта не должно занимать ни сто секунд, ни тридцать. Даже если у вас нет твердотельного диска. Практика показывает, что и не занимает. Я читаю не полгигабайта, а 16,2 ГБ. Полгигабайта- размер одного файла. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2018, 09:03 |
|
||
|
Как быстро читать большие тексовые файлы?
|
|||
|---|---|---|---|
|
#18+
AlekseySQLНаписал чудесную программу, которая читает файлы размером ~500Мб (в файле ~ 10 млн строк ). Профайлер показал, что около 2/3 времени работы занимает I/O. Так программа, которая что-то читает, и так всегда будет висеть на одном IO. Это нормально. AlekseySQLКакие еще есть хитрые способы быстрого чтения больших файлов? Никаких. Если не будешь читать побайтово, то все остальные способы будут примерно одинаково быстры. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2018, 16:07 |
|
||
|
Как быстро читать большие тексовые файлы?
|
|||
|---|---|---|---|
|
#18+
Dima TМожешь потестить мой block_read.h . Писал для быстрого чтения больших текстовых файлов. Топик тут Примеры исходников там же можешь посмотреть uniq-crc.cpp Вот если бы эта чудная разработка параллельно читала блоки данных с разных винтов (по мере их освобождения от предыдущего чтения), и создавала единую последовательность данных в памяти, то цены бы ей не было! А так, не сильно понятно чем отличается от классического map, который читает страницами по 4кБ. Например, у меня 4 кб вмещают примерно 80 строк текстового файла, так что если бы этот подход давал прирост в скорости чтения, то и на map было бы все видно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2018, 17:46 |
|
||
|
Как быстро читать большие тексовые файлы?
|
|||
|---|---|---|---|
|
#18+
AlekseySQLDima TМожешь потестить мой block_read.h . Писал для быстрого чтения больших текстовых файлов. Топик тут Примеры исходников там же можешь посмотреть uniq-crc.cpp Вот если бы эта чудная разработка параллельно читала блоки данных с разных винтов (по мере их освобождения от предыдущего чтения), и создавала единую последовательность данных в памяти, то цены бы ей не было! А так, не сильно понятно чем отличается от классического map, который читает страницами по 4кБ. Например, у меня 4 кб вмещают примерно 80 строк текстового файла, так что если бы этот подход давал прирост в скорости чтения, то и на map было бы все видно. Можно и map, только скорость не в этом. Отличие там не в чтении, а в разборе на строки. Там для разбиения на строки простейший поиск конца строки. В итоге получилось намного быстрее штатного fgets(). В топике вроде писал на сколько ускорилось, найти не смог. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2018, 18:29 |
|
||
|
Как быстро читать большие тексовые файлы?
|
|||
|---|---|---|---|
|
#18+
MasterZivНикаких. Если не будешь читать побайтово, то все остальные способы будут примерно одинаково быстры.Не согласен. Сколько ни тестили (и мы на этом форуме в том числе), стримы серьезно, чуть не в разы проигрывают даже fread. Причина мне непонятна. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2018, 19:44 |
|
||
|
Как быстро читать большие тексовые файлы?
|
|||
|---|---|---|---|
|
#18+
SiemarglMasterZivНикаких. Если не будешь читать побайтово, то все остальные способы будут примерно одинаково быстры.Не согласен. Сколько ни тестили (и мы на этом форуме в том числе), стримы серьезно, чуть не в разы проигрывают даже fread. Причина мне непонятна. Хочешь сказать, что чтение средствами языка С (с использованием FILE) обгононяет чтение средствами языка С++ (с использованием ifstream и ofstream)? Кстати, а чем система ввода/вывода С++ лучше, чем в С? Прохоренок, например, в своей книге говорит, что надо отдать предпочтение первой, не поясняя почему. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2018, 20:25 |
|
||
|
Как быстро читать большие тексовые файлы?
|
|||
|---|---|---|---|
|
#18+
Dima TМожно и map, только скорость не в этом. Отличие там не в чтении, а в разборе на строки. Там для разбиения на строки простейший поиск конца строки. В итоге получилось намного быстрее штатного fgets(). В топике вроде писал на сколько ускорилось, найти не смог. У меня именно с map поиск конца строки (в одной большой строке) используется: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. И никакого прироста производительности не замечено. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2018, 20:30 |
|
||
|
Как быстро читать большие тексовые файлы?
|
|||
|---|---|---|---|
|
#18+
Я просто оставлю это здесь... Code : Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. ReadLen:671392842 -- 640 МБ (671 392 842 байт) ЗА 0,832291 секунд. WinApi функция - ReadFile ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2018, 22:20 |
|
||
|
Как быстро читать большие тексовые файлы?
|
|||
|---|---|---|---|
|
#18+
Притом у меня обычный HDD 2010 года, дешёвого компьютера. И процессор Intel® Celeron® Processor E3300 (1M Cache, 2.50 GHz, 800 MHz FSB) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2018, 22:21 |
|
||
|
Как быстро читать большие тексовые файлы?
|
|||
|---|---|---|---|
|
#18+
Няшик, Изыди из топика! Или на ++билдере перепиши =) (Тоже грех, но мелок) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2018, 22:24 |
|
||
|
Как быстро читать большие тексовые файлы?
|
|||
|---|---|---|---|
|
#18+
Няшик, Дополнительно замечу, что у местной богемы такой металлолом не наблюдается. Секи тему! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2018, 22:25 |
|
||
|
Как быстро читать большие тексовые файлы?
|
|||
|---|---|---|---|
|
#18+
Няшик, Еще за код - шоб тебе черти з'илы за попытку прочитать в стринг целый файл одним махом..... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2018, 22:30 |
|
||
|
Как быстро читать большие тексовые файлы?
|
|||
|---|---|---|---|
|
#18+
Тут был продемонстрирован пример работы WinApi функции - ReadFile Нет никакой сложности перевести на c++ Siemargl, А чего такого??? Одним махом быстрее xD Всего лишь 0,8 сек. Быстренько отработали с массивом что надо, и закрыли. Увы - это практичнее, чем читать файл частями - искать нужное, и тратить драгоценное время. Когда всё тоже самое можно сделать за пару секунд, но используя при этом больше оперативной памяти В конце - то концов, Java этим не брезгует. И даже не подтирает за собою))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2018, 22:54 |
|
||
|
Как быстро читать большие тексовые файлы?
|
|||
|---|---|---|---|
|
#18+
Няшик, Что тебе было непонятно в первом моем посте?? Для залетных поясню, что задача - практическая, а твое частное теоретическое решение для мелких файлов - оффтоп. Пиши нормальный вариант по теме топика и будешь велкам. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2018, 23:00 |
|
||
|
Как быстро читать большие тексовые файлы?
|
|||
|---|---|---|---|
|
#18+
Siemargl, Я показал как читается файл размером 640 МБ (671 392 842 байт) за 0,8 секунд целиком . И продолжаешь говорить что функция ReadFile для маленьких файлов ? А ты смешной Задача была - подсказать как можно быстро читать большие файлы. Я показал, и не суть, что пример был на Delphi ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2018, 23:08 |
|
||
|
Как быстро читать большие тексовые файлы?
|
|||
|---|---|---|---|
|
#18+
НяшикТут был продемонстрирован пример работы WinApi функции - ReadFile Нет никакой сложности перевести на c++ Siemargl, А чего такого??? Одним махом быстрее xD Всего лишь 0,8 сек. Быстренько отработали с массивом что надо, и закрыли. Увы - это практичнее, чем читать файл частями - искать нужное, и тратить драгоценное время. Когда всё тоже самое можно сделать за пару секунд, но используя при этом больше оперативной памяти В конце - то концов, Java этим не брезгует. И даже не подтирает за собою))) Подобный подход я тестировал во втором пункте, когда работал с памятью как с файлом (через объект QBuffer). В моем случае это оказался самый медленный вариант. p.s. не думаю, что ребята из Qt налажали и как-то неудачно реализовали этот функционал. Скорее всего для моей задачи под win- платформой будет тоже самое. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2018, 23:10 |
|
||
|
Как быстро читать большие тексовые файлы?
|
|||
|---|---|---|---|
|
#18+
AlekseySQL, Тогда как ты объяснишь это, что на Delphi это очень быстро работает? Да по любому косяк ваших c++ кодов. Даже и сомневаться не надо, и пусть там компания которая заслуживает почёта Ведь тесты чистые есть, и они показывают превосходные цифры в производительности ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2018, 23:12 |
|
||
|
Как быстро читать большие тексовые файлы?
|
|||
|---|---|---|---|
|
#18+
Няшик, ты не понимаешь сути. я думаю, нечего с тобой обсуждать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2018, 23:17 |
|
||
|
Как быстро читать большие тексовые файлы?
|
|||
|---|---|---|---|
|
#18+
Siemargl, Как знаешь. Я сделал ещё тесты, на этот раз загрузил файлик размером 1,97 ГБ (2 120 760 783 байт) Потратив на это 71,545101 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2018, 23:28 |
|
||
|
Как быстро читать большие тексовые файлы?
|
|||
|---|---|---|---|
|
#18+
НяшикSiemargl, Как знаешь. Я сделал ещё тесты, на этот раз загрузил файлик размером 1,97 ГБ (2 120 760 783 байт) Потратив на это 71,545101 У меня 16,2 ГБ за 161 секунду обрабатывались. Если у вас указано время 71,54510 в секундах, то не вижу сверхестественных достижений. Но сравнивать вашу производительность с моей глупо: у нас разные исходные данные, а можно сравнивать только результаты одинаковых задач. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2018, 01:04 |
|
||
|
Как быстро читать большие тексовые файлы?
|
|||
|---|---|---|---|
|
#18+
НяшикReadLen:671392842 -- 640 МБ (671 392 842 байт) ЗА 0,832291 секунд. WinApi функция - ReadFileНа такой скорости с HDD читаются только разреженные (sparse) файлы. Даже для "обычных" SSD ~гигабайт в секунду - недостижимая фантастика. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2018, 01:10 |
|
||
|
Как быстро читать большие тексовые файлы?
|
|||
|---|---|---|---|
|
#18+
Basil A. Sidorov, Я написал код, и указал ближайший файл большой, который помнил. Запустил, сделал скрин. И отправил сюда. AlekseySQLУ меня 16,2 ГБ за 161 секунду обрабатывались. Если у вас указано время 71,54510 в секундах, то не вижу сверхестественных достижений. Но сравнивать вашу производительность с моей глупо: у нас разные исходные данные, а можно сравнивать только результаты одинаковых задач. У тебя SSD а у меня HDD который работает с 2010 года по 10 - 15 часов. По этому, для моего 71,54510 для файла 2 гб. Это нормально Тесты моего диска. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2018, 01:29 |
|
||
|
Как быстро читать большие тексовые файлы?
|
|||
|---|---|---|---|
|
#18+
Кстати, если открыть диспетчер во время работы моей программы. То можно увидеть, что ReadFile из диска выжимает все соки, и читает на скорости 268 мб в секунду ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2018, 01:36 |
|
||
|
Как быстро читать большие тексовые файлы?
|
|||
|---|---|---|---|
|
#18+
НяшикЯ написал код, и указал ближайший файл большой, который помнил. Запустил, сделал скрин. И отправил сюда.Проблема микробенчмарков не в том, чтобы их выполнить, а в том, чтобы выполнить их корректно . HDD чисто физически не может читать со скоростью 640/.8 ~= 800МБ/с. Скорость линейного чтения любых HDD не выходит за 300МБ/с. Скорость линейного чтения диска 2010 года, учитывая тогдашние плотности, будет на уровне 80-130МБ/с, в зависимости от ёмкости. А вот для разреженного файла, где надо просто забить память нулями или для файла, который был закэширован (тем же superfetch) и гигабайт в секунду - нормально. Вот только к чтению с диска это никак не относится. P.S. SSD у AlekseySQL - меня пока жаба давит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2018, 01:40 |
|
||
|
Как быстро читать большие тексовые файлы?
|
|||
|---|---|---|---|
|
#18+
Basil A. Sidorov, Ну, вроде максимальный порог 268 мб/сек мой хард может, и если диспетчер не врёт, то мой хард вот https://market.yandex.ru/product/1012789/spec?track=tabs Интерфейс Подключение SATA 3Gbit/s Внешняя скорость передачи данных 300 Мб/с Внутренняя скорость передачи данных 972 Мбит/с Временные характеристики Среднее время доступа, чтение 8.9 мс Среднее время доступа, запись 10.9 мс Время доступа full stroke 21 мс Время доступа track to track 2 мс Среднее время задержки (Latency) 4.2 мс К тому - же, замер у меня ювелирно точный, до 0,000000 секунд. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2018, 01:58 |
|
||
|
Как быстро читать большие тексовые файлы?
|
|||
|---|---|---|---|
|
#18+
НяшикНу, вроде максимальный порог 268 мб/сек мой хард может, и если диспетчер не врёт, то мой хард вот https://market.yandex.ru/product/1012789/spec?track=tabs Интерфейс Подключение SATA 3Gbit/s Внешняя скорость передачи данных 300 Мб/с Внутренняя скорость передачи данных 972 Мбит/с А вот 972МБит/с ~= 126МБайт/с это уже обмен данными "с пластинами" и эта цифра уже соответствует спецификациям WDC . В точности вашей модели там нет, но есть аналогичная (по технологии и ёмкости).К тому - же, замер у меня ювелирно точный, до 0,000000 секунд.Это ещё одно заблуждение, которое проявится тогда, когда вы начнёте измерять интервалы на уровне долей миллисекунды. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2018, 03:35 |
|
||
|
Как быстро читать большие тексовые файлы?
|
|||
|---|---|---|---|
|
#18+
AlekseySQLDima TМожно и map, только скорость не в этом. Отличие там не в чтении, а в разборе на строки. Там для разбиения на строки простейший поиск конца строки. В итоге получилось намного быстрее штатного fgets(). В топике вроде писал на сколько ускорилось, найти не смог. У меня именно с map поиск конца строки (в одной большой строке) используется: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. И никакого прироста производительности не замечено. Зачем тут strncpy() ? Размер ты знаешь, поэтому достаточно memcpy() Добавь внутрь этого цикла простейший счетчик и просто посчитай сколько строк в файле. Засеки время - получишь максимальную скорость чтения, а дальше думай как эту скорость не растерять. Можно в два потока организовать обработку: читаешь кусок файла, если в конце обрезанная строка, то переносишь ее в следующий блок, текущий блок отдаешь на обработку второму потоку, в след. блок дочитываешь из файла и т.д. Если порядок обработки строк не играет роли, то обрабатывающих потоков можно больше одного запустить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2018, 09:06 |
|
||
|
Как быстро читать большие тексовые файлы?
|
|||
|---|---|---|---|
|
#18+
[quot Няшик] У тебя SSD а у меня HDD который работает с 2010 года по 10 - 15 часов. [quot] Нет, первые тесты были сделаны на обычном HDD и я вопрошал: "А будет ли прирост производительности на SSD?". Кстати, скорость 100 Мб/сек вполне нормальная для HDD (который в синтетических тестах показывает примерно 130-150 попугаев). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2018, 10:25 |
|
||
|
|

start [/forum/topic.php?all=1&fid=57&tid=2017991]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
77ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
63ms |
get tp. blocked users: |
1ms |
| others: | 11ms |
| total: | 195ms |

| 0 / 0 |
