Pages: (5) 1 [2] 3 4 5  ( Show unread post )

> страдания по c++
 Set Member is Offline
 Posted: 01-04-2013, 00:02 (post 16, #1074132)

Visionary

Group: Members
Posts: 5181
Warn:0%-----
QUOTE (Lexus @ 31-03-2013, 11:42)
QUOTE (Set @ 31-03-2013, 06:45)
Определи число строк в файле, сразу создай вектор нужного размера и пиши в него напрямую, как в массив: results[n] = ...
А возможно определить кол-во не читая всё файло?
Как написал FiL, увеличивай размер вектора на, скажем, миллион записей за раз. .resize() же под это дело есть... им и обрежешь излишки в конце. И не пользуйся собственными методами вектора, сделай две переменные, одну под текущую позицию, другую либо с его размером, либо с числом доступных для записи позиций.
PM
Top Bottom
 Lord KiRon Member is Offline
 Posted: 01-04-2013, 00:20 (post 17, #1074133)

Part time flamer

Group: Read Only
Posts: 7784
Warn:0%-----
QUOTE (Set @ 31-03-2013, 23:02)
QUOTE (Lexus @ 31-03-2013, 11:42)
QUOTE (Set @ 31-03-2013, 06:45)
Определи число строк в файле, сразу создай вектор нужного размера и пиши в него напрямую, как в массив: results[n] = ...
А возможно определить кол-во не читая всё файло?
Как написал FiL, увеличивай размер вектора на, скажем, миллион записей за раз. .resize() же под это дело есть... им и обрежешь излишки в конце. И не пользуйся собственными методами вектора, сделай две переменные, одну под текущую позицию, другую либо с его размером, либо с числом доступных для записи позиций.
С вектором стрингов не поможет, так как стринги неизвестной длины.
Тут вся проблема в том что зачем-то копируются данные из файла в памят, а зачем?
PM
Top Bottom
 FiL Member is Offline
 Posted: 01-04-2013, 08:33 (post 18, #1074140)

Сварливый Мозг Клуба
Group: Roots
Group: Roots
Posts: 22883
Ну и что, что неизвестной? Можно выделять не точно, но все равно, большими кусками. Ресурсы кушаются именно на перевыделение памяти.

А что читать всё в память не ясно зачем, так я с этого и начал. Но может оно реяльно нужно...
PM Email Poster ICQ AOL MSN
Top Bottom
 Set Member is Offline
 Posted: 02-04-2013, 07:20 (post 19, #1074188)

Visionary

Group: Members
Posts: 5181
Warn:0%-----
Объект string имеет фиксированный размер, иначе с ним никих массивов не создать было бы. Текст внутри задаётся как char* и реально находится в "куче".

При записи строки в вектор происходит eё копирования и тут, конечно, тоже можно оптимизировать, скажем, сделав вектор ссылок на строки и явно записывая туда ссылки.

This post has been edited by Set on 02-04-2013, 11:23
PM
Top Bottom
 Lexus Member is Offline
 Posted: 02-04-2013, 15:41 (post 20, #1074206)

Коллекционер
Group: Global Moders
Group: Global Moders
Posts: 10401
QUOTE (FiL @ 31-03-2013, 22:53)
я не понял. ты считываешь весь файл и засовываешь его в вектор. А нахрена? Считал строку, обработал и пошел дальше. Зачем ты хранишь все прочитанные строки?

там инфа хранится не в строках, а в столбцах. т.е. надо всё считать, отсортировать, сравнить и так далее. но всё столбцами ;(
PM Email Poster Users Website
Top Bottom
 FiL Member is Offline
 Posted: 02-04-2013, 17:42 (post 21, #1074218)

Сварливый Мозг Клуба
Group: Roots
Group: Roots
Posts: 22883
хранится столбцами, а в память суешь строками... Зачем? Потом отдельно будешь разбивать на столбцы и опять-же сувать в другую память?
Разбивай сразу при чтении, бери нужные тебе значения и суй в нужные массивы. Причем если там числа, то суй числами, а не строками. Все равно придется щто делать, так делай это во время чтения.
PM Email Poster ICQ AOL MSN
Top Bottom
 Lexus Member is Offline
 Posted: 02-04-2013, 17:53 (post 22, #1074221)

Коллекционер
Group: Global Moders
Group: Global Moders
Posts: 10401
QUOTE (FiL @ 02-04-2013, 16:42)
хранится столбцами, а в память суешь строками... Зачем? Потом отдельно будешь разбивать на столбцы и опять-же сувать в другую память?
Разбивай сразу при чтении, бери нужные тебе значения и суй в нужные массивы. Причем если там числа, то суй числами, а не строками. Все равно придется щто делать, так делай это во время чтения.
Я наверное пример реальный приведу))) Шас приготовлю все данные ;) И запошу :)
PM Email Poster Users Website
Top Bottom
 Lord KiRon Member is Offline
 Posted: 02-04-2013, 18:17 (post 23, #1074222)

Part time flamer

Group: Read Only
Posts: 7784
Warn:0%-----
QUOTE (Set @ 02-04-2013, 06:20)
Объект string имеет фиксированный размер, иначе с ним никих массивов не создать было бы. Текст внутри задаётся как char* и реально находится в "куче".

При записи строки в вектор происходит eё копирования и тут, конечно, тоже можно оптимизировать, скажем, сделав вектор ссылок на строки и явно записывая туда ссылки.
...А куча реально фрагментируется и при реальных реэлокациях из за этой фрагментации реально же тормозит.
PM
Top Bottom
 FiL Member is Offline
 Posted: 03-04-2013, 07:15 (post 24, #1074241)

Сварливый Мозг Клуба
Group: Roots
Group: Roots
Posts: 22883
QUOTE (Lexus @ 02-04-2013, 10:53)
QUOTE (FiL @ 02-04-2013, 16:42)
хранится столбцами, а в память суешь строками... Зачем? Потом отдельно будешь разбивать на столбцы и опять-же сувать в другую память?
Разбивай сразу при чтении, бери нужные тебе значения и суй в нужные массивы. Причем если там числа, то суй числами, а не строками. Все равно придется щто делать, так делай это во время чтения.
Я наверное пример реальный приведу))) Шас приготовлю все данные ;) И запошу :)
Давненько мы не брали в руки шашек :)
Я на самом деле вообще не уверен, что я после универа хоть одну программу написал больше 15 строк.
PM Email Poster ICQ AOL MSN
Top Bottom
 Гордый Member is Offline
 Posted: 03-04-2013, 09:43 (post 25, #1074246)

proRock
Group: Netlab Soldier
Group: Netlab Soldier
Posts: 25095
Warn:0%-----
QUOTE (FiL @ 03-04-2013, 06:15)
Я на самом деле вообще не уверен, что я после универа хоть одну программу написал больше 15 строк.
а тут что программу Hello World пишут? Я её могу на многих языках написать. :diablo: :lol:
PM
Top Bottom
 Lexus Member is Offline
 Posted: 03-04-2013, 11:51 (post 26, #1074252)

Коллекционер
Group: Global Moders
Group: Global Moders
Posts: 10401
QUOTE (Гордый @ 03-04-2013, 08:43)

а тут что программу Hello World пишут? Я её могу на многих языках написать. :diablo: :lol:
тут карьера математика как програмиста на кону)))
PM Email Poster Users Website
Top Bottom
 Lord KiRon Member is Offline
 Posted: 03-04-2013, 18:25 (post 27, #1074270)

Part time flamer

Group: Read Only
Posts: 7784
Warn:0%-----
Иди пиши на матлабе.
Это будет месть всем математикам, а то как подсунут "берешь вторую производную от функции контрастного фокуса", а потом неделю трахаешься как эту функцию построить и это самую производную на С++ взять.
Причем делов там на 2 минуты, но только когда обьяснят человеческим языком что имели в виду.
(И нечего мне тыкать что я математику заканчивал, кто ее там помнил после экзамена, кроме фамилий этих самых математеков, да и то с трудом)
PM
Top Bottom
 Lexus Member is Offline
 Posted: 10-04-2013, 13:39 (post 28, #1074662)

Коллекционер
Group: Global Moders
Group: Global Moders
Posts: 10401
апдейт: беда поборота. Жопец был в том, что все тестировалась в дебаг-модусе. Стартуешь прогу в релизе - всё шуршит!
PM Email Poster Users Website
Top Bottom
 FiL Member is Offline
 Posted: 10-04-2013, 16:10 (post 29, #1074665)

Сварливый Мозг Клуба
Group: Roots
Group: Roots
Posts: 22883
ох уж эти современные программисты с неограниченными ресурсами. А потом мы удивляемся, что комп тормозит и что винда разрослась до десятка гигабайт.
PM Email Poster ICQ AOL MSN
Top Bottom
 Lexus Member is Offline
 Posted: 11-04-2013, 09:07 (post 30, #1074699)

Коллекционер
Group: Global Moders
Group: Global Moders
Posts: 10401
QUOTE (FiL @ 10-04-2013, 15:10)
ох уж эти современные программисты с неограниченными ресурсами. А потом мы удивляемся, что комп тормозит и что винда разрослась до десятка гигабайт.
Да не, там всё очень компакто вышло))) Я же по пути не только дебаг на релиз поменял)))) Но я вас ешё не отпускаю))) Стрижка только началась)))
PM Email Poster Users Website
Top Bottom
Topic Options Pages: (5) 1 [2] 3 4 5