Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.09.2010, 10:39   #11
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Ну сортировки в задании нет. А моему подходу сортировка не нужна.
1. Данные уже отсортированы. Думаю, они такие всегда на практике и будут.
2. Можно в конце полученный массив отсортировать.
Согласен, на сортировке время потеряю.
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 08.09.2010, 11:01   #12
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Цитата:
Ну так - яж ещё дополнительно UCase подключил
Согласен. Это обязательное условие автора - сравнивать не зависимо от регистра.
Посмотрите. Я тут тоже "подкрутил" свой код. Сравните время выполнения.
Вложения
Тип файла: rar Test_1.rar (447.7 Кб, 28 просмотров)
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 08.09.2010, 11:11   #13
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Сравнил - да, если я добавлю в конце сортировку, может и проиграю. Но на этих данных (сортировка 8 строк) вряд ли, это надо на практике тестить.
Хотя для ТС доли секунды роли не играют.
И кстати - про регистр ТС ничего не говорил Но по логике конечно регистр не надо учитывать.
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 08.09.2010, 11:14   #14
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Речь не о сортировке. В моем коде она содержится. Однако процедура выполняется в 2 раза быстрее. Вы обнаружили, почему?
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 08.09.2010, 11:16   #15
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Я не обнаружил - у меня она выполняется медленнее моей , поэтому не искал.
Но StrComp() видел, умно - сразу отсекает по первому несовпадению...
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 08.09.2010, 11:19   #16
nilem
Форумчанин
 
Регистрация: 25.04.2010
Сообщений: 616
По умолчанию

Обнаружили. Супер! Что называется, просто и со вкусом.
nilem вне форума Ответить с цитированием
Старый 08.09.2010, 11:24   #17
nilem
Форумчанин
 
Регистрация: 25.04.2010
Сообщений: 616
По умолчанию

Цитата:
Сообщение от Hugo121 Посмотреть сообщение
... у меня она выполняется медленнее моей , поэтому не искал...
Не может быть. Чтобы увидеть разницу, растянул на 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.
nilem вне форума Ответить с цитированием
Старый 08.09.2010, 11:34   #18
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Цитата:
у меня она выполняется медленнее моей
Странно... Результат теста на моем компьютере такой: nilem - 1,25 сек, Hugo121 - 0,98 сек, мой вариант - 0,42 сек. Естественно, в среднем.
По сравнению с 1-м вариантом, я ушел от относительно медленной операции конкатенации и от текстового преобразования LCase (UCase), а так же, проверка 2-го значения делается только при совпадении 1-го. Конечно, при текстовом сравнении (StrComp без учета регистра) все равно происходит текстовое преобразование, но это осуществляется в недрах Windows на языке C, что существенно быстрее.
Но, это все мелочи, по сравнению с тем временем, которое Excel тратит на то, чтобы поместить массив размером 60 000 Х 3 на рабочий лист. Если вы обратили внимание, то в моем последнем примере на лист выводятся только действительные значения (ограниченные наращиваемой переменной j). Пустые, которых в данном примере получается подавляющее большинство, на лист не вставляются.

P.S. Речь идет о тесте прикрепленного файла.
Чем шире угол зрения, тем он тупее.

Последний раз редактировалось SAS888; 08.09.2010 в 11:35. Причина: Добавлено
SAS888 вне форума Ответить с цитированием
Старый 08.09.2010, 11:35   #19
Hugo121
Старожил
 
Регистрация: 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.
Hugo121 вне форума Ответить с цитированием
Старый 08.09.2010, 11:43   #20
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Цитата:
Может тут версия влияет - у меня 2000 англ.
Да. Очевидно.
Результат еще одного теста:
nilem (2003 рус) - 1,25 сек., nilem (2007 рус) - 1,7 сек.
Hugo121 (2003 рус) - 0,98 сек., Hugo121 (2007 рус) - 1,37 сек.
SAS888 (2003 рус) - 0,42 сек., SAS888 (2007 рус) - 0,52 сек.
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Объединение 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