|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
08.09.2010, 10:39 | #11 |
Старожил
Регистрация: 11.05.2010
Сообщений: 5,166
|
Ну сортировки в задании нет. А моему подходу сортировка не нужна.
1. Данные уже отсортированы. Думаю, они такие всегда на практике и будут. 2. Можно в конце полученный массив отсортировать. Согласен, на сортировке время потеряю.
webmoney: E265281470651 Z422237915069 R418926282008
|
08.09.2010, 11:01 | #12 | |
Старожил
Регистрация: 05.12.2007
Сообщений: 4,180
|
Цитата:
Посмотрите. Я тут тоже "подкрутил" свой код. Сравните время выполнения.
Чем шире угол зрения, тем он тупее.
|
|
08.09.2010, 11:11 | #13 |
Старожил
Регистрация: 11.05.2010
Сообщений: 5,166
|
Сравнил - да, если я добавлю в конце сортировку, может и проиграю. Но на этих данных (сортировка 8 строк) вряд ли, это надо на практике тестить.
Хотя для ТС доли секунды роли не играют. И кстати - про регистр ТС ничего не говорил Но по логике конечно регистр не надо учитывать.
webmoney: E265281470651 Z422237915069 R418926282008
|
08.09.2010, 11:14 | #14 |
Старожил
Регистрация: 05.12.2007
Сообщений: 4,180
|
Речь не о сортировке. В моем коде она содержится. Однако процедура выполняется в 2 раза быстрее. Вы обнаружили, почему?
Чем шире угол зрения, тем он тупее.
|
08.09.2010, 11:16 | #15 |
Старожил
Регистрация: 11.05.2010
Сообщений: 5,166
|
Я не обнаружил - у меня она выполняется медленнее моей , поэтому не искал.
Но StrComp() видел, умно - сразу отсекает по первому несовпадению...
webmoney: E265281470651 Z422237915069 R418926282008
|
08.09.2010, 11:19 | #16 |
Форумчанин
Регистрация: 25.04.2010
Сообщений: 616
|
Обнаружили. Супер! Что называется, просто и со вкусом.
|
08.09.2010, 11:24 | #17 |
Форумчанин
Регистрация: 25.04.2010
Сообщений: 616
|
Не может быть. Чтобы увидеть разницу, растянул на 150000 строк: мой код 2.03; Hugo 1.82; SAS888 0.59.
Ну и что теперь делать с этими коллекциями/словарями? Уточнение: 2,03 - это без сортировки. С сортировкой - 2,16 (еще поправил код: массивы не объединяем, а пишем сразу ключ - k = x(i, 1) & x(i, 2)). Последний раз редактировалось nilem; 08.09.2010 в 11:29. |
08.09.2010, 11:34 | #18 | |
Старожил
Регистрация: 05.12.2007
Сообщений: 4,180
|
Цитата:
По сравнению с 1-м вариантом, я ушел от относительно медленной операции конкатенации и от текстового преобразования LCase (UCase), а так же, проверка 2-го значения делается только при совпадении 1-го. Конечно, при текстовом сравнении (StrComp без учета регистра) все равно происходит текстовое преобразование, но это осуществляется в недрах Windows на языке C, что существенно быстрее. Но, это все мелочи, по сравнению с тем временем, которое Excel тратит на то, чтобы поместить массив размером 60 000 Х 3 на рабочий лист. Если вы обратили внимание, то в моем последнем примере на лист выводятся только действительные значения (ограниченные наращиваемой переменной j). Пустые, которых в данном примере получается подавляющее большинство, на лист не вставляются. P.S. Речь идет о тесте прикрепленного файла.
Чем шире угол зрения, тем он тупее.
Последний раз редактировалось SAS888; 08.09.2010 в 11:35. Причина: Добавлено |
|
08.09.2010, 11:35 | #19 |
Старожил
Регистрация: 11.05.2010
Сообщений: 5,166
|
Не знаю, у меня вот что на последнем файле Test_1.rar:
nilem 0.703125 сек. hugo 0.4375 сек. sas888 0.453125 сек. nilem 0.6875 сек. hugo 0.40625 сек. sas888 0.453125 сек. nilem 0.6875 сек. hugo 0.421875 сек. sas888 0.484375 сек. nilem 0.703125 сек. hugo 0.421875 сек. sas888 0.453125 сек. nilem 0.703125 сек. hugo 0.40625 сек. sas888 0.453125 сек. Может тут версия влияет - у меня 2000 англ. Да, про обрезание массива я не заметил. Так и я так могу - ведь есть d.Count
webmoney: E265281470651 Z422237915069 R418926282008
Последний раз редактировалось Hugo121; 08.09.2010 в 11:39. |
08.09.2010, 11:43 | #20 | |
Старожил
Регистрация: 05.12.2007
Сообщений: 4,180
|
Цитата:
Результат еще одного теста: nilem (2003 рус) - 1,25 сек., nilem (2007 рус) - 1,7 сек. Hugo121 (2003 рус) - 0,98 сек., Hugo121 (2007 рус) - 1,37 сек. SAS888 (2003 рус) - 0,42 сек., SAS888 (2007 рус) - 0,52 сек.
Чем шире угол зрения, тем он тупее.
|
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Объединение 2-х одинаковых баз данных | AlexeiDelejov | БД в Delphi | 6 | 24.06.2010 17:55 |
Поиск данных в нескольких таблицах | a_n_n_a | БД в Delphi | 10 | 23.04.2010 11:33 |
Подсчет числа одинаковых слов в нескольких категориях. | Hagen83 | Microsoft Office Excel | 2 | 13.03.2010 09:45 |
Найти совпадения данных в 2ух таблицах.?? | fifty50 | Microsoft Office Excel | 14 | 24.02.2010 17:46 |
Величина изменения данных текущей даты от предыдущей в сводных таблицах. | Strelec79 | Microsoft Office Excel | 0 | 05.08.2009 19:20 |