Forum Webscript.Ru

Программирование => Perl => Тема начата: Billi от 02 Декабря 2003, 14:35:21

Название: Оптимизация сортировки
Отправлено: Billi от 02 Декабря 2003, 14:35:21
Соритрую 2-х мерный массив по 2м ключам, соритровка выполняется давольно длительное время (4000 значений сортируюся приблезительно 4 секунды)
Исходник ......
................
@finally = map {$_->
sort{$a_->[1] cmp $b_->[1] || $a_->[2] <=> $b_->[2]}
map{[$_,$_->
.................
Можноли как то ускорить данный процесс?
Название: Оптимизация сортировки
Отправлено: ondr от 02 Декабря 2003, 14:50:33
А что если попробовать СУБД?

ps: Может и  без того способ есть, правда, понять это видя 3 строчки кода и не видя задачи довольно "сложно".
Название: Оптимизация сортировки
Отправлено: Billi от 02 Декабря 2003, 15:44:57
На MySQL пробовал, бытрее но в том вся и тема что надо на перл реализовать.
Суть задачи проста - есть таблица
Название товара и  Цена
Надо отсортировать товар сначала по типу а внутри типа по цене.
Название: Оптимизация сортировки
Отправлено: ondr от 02 Декабря 2003, 17:17:22
Вот выбрал время и подумал над твоей задачей:
-------
# Наберем массив:
my @mass = ();
for (1..4000) {
  my $tmp = [];
  for my $n (1..10) {
    push @$tmp, int(rand(20000));
  }
  push @mass, [ genrstr(int rand(64)), $tmp ]; # genrstr - возвращает абракадабру заданой длины
}

# и отсортируем

my $time = gettimeofday; # засекаем время

$_->[1] = [ sort {$a <=> $b} @{$_->[1]} ] for @mass;
@mass = sort {$a->

print gettimeofday - $time; # 0,35 сек (с map\'ами выходило больше)
-----

Зы:  Если мимо, то уж в следующий раз поточнее опиши условия. И ненадо так утрамбовывать код - его потом прочитать нельзя.
Название: Оптимизация сортировки
Отправлено: Chs от 02 Декабря 2003, 22:51:12
Billi
Ну а алгоритмы сортировки посмотреть? Того же Кнута почитать? :)