|
|
|
Остановить велосипед или кое-что полезное
|
|||
|---|---|---|---|
|
#18+
Думаю, что у всех есть небольшие классы для каких-то целей. Вот класс, который разбирает на поля строку, разделённую какими-то разделителями. Если указать chrSep, то у поля будут отрезаться концевые ограничители, а сдвоенные - собираться в один. 'aaa''a' -> aaa'a Код: plaintext 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. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2006, 13:42 |
|
||
|
Остановить велосипед или кое-что полезное
|
|||
|---|---|---|---|
|
#18+
Этот класс парсит файл построчно. Обработка ошибок минимальна. Вероятность того, что malloc не выделит память под Windows я полагаю равной нулю исходя из опыта. Код: plaintext 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. 72. 73. 74. 75. 76. 77. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2006, 13:46 |
|
||
|
Остановить велосипед или кое-что полезное
|
|||
|---|---|---|---|
|
#18+
niknameДумаю, что у всех есть небольшие классы для каких-то целей. Вот класс, который разбирает на поля строку, разделённую какими-то разделителями. Если указать chrSep, то у поля будут отрезаться концевые ограничители, а сдвоенные - собираться в один. 'aaa''a' -> aaa'a...Замечания по оптимизации приветствуются, но должны быть оттестированы. замечание одно - глянуть STL... (круглый) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2006, 13:46 |
|
||
|
Остановить велосипед или кое-что полезное
|
|||
|---|---|---|---|
|
#18+
Угу. Беда в том, что aa^^b^'ccc''c'^\n штатными средствами не распарсить в 1."aa" 2."" 3."b" 4."ccc'c" 5."" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2006, 13:49 |
|
||
|
Остановить велосипед или кое-что полезное
|
|||
|---|---|---|---|
|
#18+
nikname...Обработка ошибок минимальна. Вероятность того, что malloc не выделит память под Windows я полагаю равной нулю исходя из опыта..... советы дня.. 1) не экономте на обработке ошибок - сьэкономите кучу времени...особенно в проектах поболее хэллохты мир... 2) отсутсвие проверки после молока - типичная и самая распространённая ошибка начинающих и не очень программистов. не хватка памяти - и такое так же встречается.... успехов Вам (круглый) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2006, 13:50 |
|
||
|
Остановить велосипед или кое-что полезное
|
|||
|---|---|---|---|
|
#18+
1. Спасибо. Правда я не экономлю на этом. 2. Я засовывал в вектор (структурами) и сортировал 1.5 гиговый файл на машине с 256М. После этого решил, что результат malloc проверять не буду. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2006, 13:55 |
|
||
|
Остановить велосипед или кое-что полезное
|
|||
|---|---|---|---|
|
#18+
nikname1. Спасибо. Правда я не экономлю на этом. 2. Я засовывал в вектор (структурами) и сортировал 1.5 гиговый файл на машине с 256М. После этого решил, что результат malloc проверять не буду. 1) перечислите пожалуйста операционки, на котором производился тест ? 2) задача сортировки, кстати если отпимальные размеры, нагрузка на память - не велика... хватит и пару киллобайт, ну может чуток поболее... (круглый) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2006, 14:02 |
|
||
|
Остановить велосипед или кое-что полезное
|
|||
|---|---|---|---|
|
#18+
1. Это был не тест и операционка - Windows XP. У меня нет необходимости писать под другую операционку. Но, при желании, этот класс можно сделать вполне безопасным. После malloc выдавать throw в случае отказа, то же при открытии и чтении. Я придерживаюсь мнения о том, что всегда возможен разумный компромисс. Хотя, вероятно, вы и правы. 2. Согласен, правда забыл добавить, что в памяти было поболе, чем 1.5 Гига, поскольку я одновременно проверял ряд полей и их наборов на уникальность - засовывая в map и подсчитывая количество одинаковых. БД работала слишком медленно, пришлось имитировать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2006, 14:08 |
|
||
|
Остановить велосипед или кое-что полезное
|
|||
|---|---|---|---|
|
#18+
kolobok0не хватка памяти - и такое так же встречается....на винде при этом начинается ТАКОЕ, что о работоспособности каких-то там программок забываешь начисто :) хотя да... если писать что для кофеварок, то да... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2006, 14:17 |
|
||
|
Остановить велосипед или кое-что полезное
|
|||
|---|---|---|---|
|
#18+
nikname1. Это был не тест и операционка - Windows XP. У меня нет необходимости писать под другую операционку. Но, при желании, этот класс можно сделать вполне безопасным. После malloc выдавать throw в случае отказа, то же при открытии и чтении. Я придерживаюсь мнения о том, что всегда возможен разумный компромисс. Хотя, вероятно, вы и правы. 2. Согласен, правда забыл добавить, что в памяти было поболе, чем 1.5 Гига, поскольку я одновременно проверял ряд полей и их наборов на уникальность - засовывая в map и подсчитывая количество одинаковых. БД работала слишком медленно, пришлось имитировать. понимаете ли в чём дело... 1) требование, предьявляемые обычно заказчиком, чтоб дышало на всех Win32 чаще встречается чем обратное... А это и Win95, Win98, NT и т.д.. (первые из перечисленных вообще мягко говоря сильно глючные, там шашками поаккуратней треба)... То, что у буржуинов встречается ышо MSDOS 3.20 - надеюсь сильно Вас не удивит.. Они то простые ребята - работает, значит не трож... наверное в этом есть своё рац. зерно... 2) вот по поводу БД - тут Вы зря так сказали...Щаз народ сбежится.. БД по поределению - работать медленне не должна. Почему - тут несколько фундаментальных камней... Первый - то, что у одиночки меньше шансов родить что нить более существенное, чем коллектив разработчиков-математиков...Второе, то что можно ускорить за счёт похеривания определённого функционала.. Ну скажем там транзакционность...Или распределённость.. Но тут другая сторона медали - очень мало задач которые не потребуют этого на таких массивах данных, с которыми не справилась БД и справился самопал...Или по другому - надо понимать, за счёт чего Вы можете обскакать стандартную БД, при этом глупо рассчитывать что Вы(я, он, не важно) умнее, людей не первый год копающихся в этом (и зарабатывающих кстати)... И ещё по поводу больших объёмов данных - рекомендую книгу Рихтера "Windows для проффесионалов". Там как раз есть оптимальный пример, для таких вот дел... Правда с сортировкой - тут уж теорию хранения данных нуна читать, там всё написано...у больших и великих :) с уважением (круглый) ЗЫ По поводу примера - если найду, повешу на форум... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2006, 14:19 |
|
||
|
Остановить велосипед или кое-что полезное
|
|||
|---|---|---|---|
|
#18+
ну бд - универсальный инструмент, что накладывает на него определённые ограничения - универсальный инструмент запросто может проиграть специализиованному. Например, означенная выборка записей по группе уникальных полей (какие серваки такое подерживают?) или там выборка случайных записей (ну после некоторого секса и такое можно замутить :) ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2006, 14:29 |
|
||
|
Остановить велосипед или кое-что полезное
|
|||
|---|---|---|---|
|
#18+
1. Наши заказчики требуют XP и 2000. 2. Дано. Чуть больше 100 000 файлов, общим весом в 1.5 гига. Можно считать, что строка это ненормализованная таблица, которая превращается в 4-е таблицы. Требуется понять - где и какие ключи, проверить их и разработать фильтры для отбраковки сбойных записей. Загрузка в БД. Построение индексов. Формирование справочников. На С++ с STL это заняло часа три на разработку и выгрузку справочников. Ещё несколько итераций длинной в день на отработку фильтров - они нетривиальные. Загрузка в подручную БД, это была ASA была прервана где-то часа через три же. Ну и мне никогда в голову не пришло бы писать свою БД, разве что за большие деньги и без всяких гарантий. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2006, 14:33 |
|
||
|
Остановить велосипед или кое-что полезное
|
|||
|---|---|---|---|
|
#18+
niknameУгу. Беда в том, что aa^^b^'ccc''c'^\n штатными средствами не распарсить в 1."aa" 2."" 3."b" 4."ccc'c" 5."" не берусь судить то ли это...но вот такие вот строки, для первой затравки Вам могут помочь... Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. кстати в STL вроде были функции кушающие скопом куча разделителей... (круглый) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2006, 14:42 |
|
||
|
Остановить велосипед или кое-что полезное
|
|||
|---|---|---|---|
|
#18+
Угу. Теперь напишем такую строку. aaaaaa^'bbbb^aaa'^\n 1."aaaaaa" 2."bbbb^aaa" 3."" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2006, 14:47 |
|
||
|
Остановить велосипед или кое-что полезное
|
|||
|---|---|---|---|
|
#18+
niknameУгу. Теперь напишем такую строку. aaaaaa^'bbbb^aaa'^\n 1."aaaaaa" 2."bbbb^aaa" 3."" Вы сформулируйтесь сначала... Что у Вас является разделителем... Всё что не буковки - это одно...конкретный символ - это другое... конкретная группа символов - это уже третье... ик (круглый) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2006, 14:49 |
|
||
|
Остановить велосипед или кое-что полезное
|
|||
|---|---|---|---|
|
#18+
Выгрузите, например что-нить из Exel в CSV. В одно из тектовых полей добавьте тот же разделитель, что и будет использоваться при выгрузке, символ " и ' и посмотрите, что получится. Вообще, если вы хотите улучшить мой код, то просто напишите и оттестируйте, а потом сравните эффективность. А учить меня на ровном месте не стоит. Т.е. я всегда благодарен за совет, но только если он мне нужен. Задача разбора текстовых файлов, похожих на CSV встаёт часто. Проблема, скажем strtok в том, что два последовательных разделителя она воспримет как один. Искать (в моём примере) ^' тож глупо, поскольку не все символьные поля обрамляются символом ' - обычно только если внутри встречается разделитель. Такая же, примерно, структура файлов - выгрузок из БД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2006, 14:56 |
|
||
|
Остановить велосипед или кое-что полезное
|
|||
|---|---|---|---|
|
#18+
nikname Я придерживаюсь мнения о том, что всегда возможен разумный компромисс. В подобных классах-утилитах, я стараюсь проверить все возможные варианты. Т.к. сейчас компьютеры быстрые, то пара иф-ов не помешает. Снижение быстродействия более, чем на 0,01 процента маловероятно. Даже, если программа заточена на непрерывное использование этого класса, вряд ли я буду от туда выкидывать подобные проверки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2006, 14:59 |
|
||
|
Остановить велосипед или кое-что полезное
|
|||
|---|---|---|---|
|
#18+
niknameВыгрузите, например что-нить из Exel в CSV. В одно из тектовых полей добавьте тот же разделитель, что и будет использоваться при выгрузке, символ " и ' и посмотрите, что получится. Вообще, если вы хотите улучшить мой код, то просто напишите и оттестируйте, а потом сравните эффективность. А учить меня на ровном месте не стоит. Т.е. я всегда благодарен за совет, но только если он мне нужен. Задача разбора текстовых файлов, похожих на CSV встаёт часто. Проблема, скажем strtok в том, что два последовательных разделителя она воспримет как один. Искать (в моём примере) ^' тож глупо, поскольку не все символьные поля обрамляются символом ' - обычно только если внутри встречается разделитель. Такая же, примерно, структура файлов - выгрузок из БД. 1) уважаемый...делать за Вас работу - никто не будет... 2) если Вам совет не нужен - ну тогда в чём проблемы то ??? 3) strtok простите, но лично я про него ничего не говорил... 4) искать в Ваших примерах - а оно мне нуна ? 5) Из/В Excell всё грузиться отлично, строиться замечательные графики испытаний (к примеру) а так же куча других форматов... Это маленькая толика того, что лично мне приходилось делать... удачи Вам (круглый) ЗЫ Велосипедостроение - это увы и ах, не по моей части...Так что извиняйте... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2006, 15:04 |
|
||
|
Остановить велосипед или кое-что полезное
|
|||
|---|---|---|---|
|
#18+
1. Я просто опубликовал вполне рабочий класс для часто встречающихся случаев и предложил другим делиться ими же. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2006, 15:06 |
|
||
|
Остановить велосипед или кое-что полезное
|
|||
|---|---|---|---|
|
#18+
kolobok0Вообще, если вы хотите улучшить мой код, то просто напишите и оттестируйте, 1) уважаемый... делать за Вас работу - никто не будет... [/quot] Думаю, надо лучше стараться понимать собеседника. ПС: Сорри, что влез. ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2006, 15:37 |
|
||
|
Остановить велосипед или кое-что полезное
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2006, 15:42 |
|
||
|
Остановить велосипед или кое-что полезное
|
|||
|---|---|---|---|
|
#18+
Akh..Думаю, надо лучше стараться понимать собеседника.... не правильные выделения... вот так лучше... "...Вообще, если вы хотите улучшить мой код, то просто напишите и оттестируйте ,...." типа принимаю Ваши идеи, чтоб скомпоновать из них нечто...а мы тут создадим коммиссию, жюри, пресс релиз... бред одним словом... как там у класика... "Все было: лужа на крыльце, | Знакомый профиль мусорного бака | И у забора писала собака | С задумчивой улыбкой на лице " (круглый) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2006, 15:44 |
|
||
|
Остановить велосипед или кое-что полезное
|
|||
|---|---|---|---|
|
#18+
Нет. Этот класс вполне себе работает в нескольких проектах. Да и было бы как-то неумно кидать готовый класс для тех целей, о которых пишете вы. И потом он действительно быстрый - сложно говорить об оптимальности, но он к нему (оптимуму) близок по скорости. А вот про оттестируйте я написал именно для того, чтобы избавиться от торопливых рекомендаций. Вы извините, что я вас оборвал выше, но я тож не мог врубиться- от чего вы на ровном месте советы даёте слишком поспешные по вполне понятному поводу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2006, 15:58 |
|
||
|
Остановить велосипед или кое-что полезное
|
|||
|---|---|---|---|
|
#18+
kolobok0 Akh..Думаю, надо лучше стараться понимать собеседника.... не правильные выделения... вот так лучше... "...Вообще, если вы хотите улучшить мой код, то просто напишите и оттестируйте ,...." типа принимаю Ваши идеи, чтоб скомпоновать из них нечто...а мы тут создадим коммиссию, жюри, пресс релиз... бред одним словом... как там у класика... "Все было: лужа на крыльце, | Знакомый профиль мусорного бака | И у забора писала собака | С задумчивой улыбкой на лице " (круглый) Если разобрать структуру предложения, то можно сделать следующий вывод: предложение улучшить и оттестировать код, было для того случая, когда вы сами изъявите желание его улучшить. Это не просьба, а объяснение, как автор будет относиться к возможному вашему желанию улучшить код. Т.е. он не против. Даже, это похоже на "кидание перчатки" в вашу сторону. Ваш ответ, по структуре, отличался агрессивностью, как будто вас просят его улучшить. Теперь можно сделать вывод, что ваша реакция, не соответствовала исходным данным. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2006, 16:16 |
|
||
|
Остановить велосипед или кое-что полезное
|
|||
|---|---|---|---|
|
#18+
Akh...Ваш ответ, по структуре, отличался агрессивностью,... Вам виднее...пущай будет так... ик (круглый) ЗЫ Даже если спирт замерзнет, | Все равно его не брошу, | Буду грызть его зубами - | Потому что он хороший! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2006, 16:32 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=34038316&tid=2030332]: |
0ms |
get settings: |
5ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
140ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
52ms |
get tp. blocked users: |
1ms |
| others: | 213ms |
| total: | 437ms |

| 0 / 0 |
