да, идея в этом. Но все должно быть в целых числах, без всяких строк. Для 2000 пользователей в минуту, активно сортирующих список из ста задач это будет перезапись 1,6 мб. Но это 2000 запросов по 800 байт (ключ int4+приоритет int4)*100, а не 32000 запросов по 20 байт(условно говоря).
Да, большие массивы в базах данных так хранить не очень удобно, но навряд ли у вас будут очень большие массивы.
2 вариант вполне хорош, когда задач немного. Советую в первую очередь вам оценить реальную нагруженность вашего сервиса пользователями и возможности серверного железа. Дальше уже можно делать выводы)
al_gon, Дѣаволъ
В общем попробовал Стеммер Портера, показал он себя слабо, ибо не всегда хорошо извлекал корень.
Хорошо себя показало сравнение по расстоянию Левенштейна. Работает достаточно быстро, что бы оставить все на VBA. При этом композиция обоих методов может дать еще лучшие результаты, если кому потребуется. Спасибо за ответы.
Нет, double precision используется там только в некоторых местах, где явно объявляется. Все остальные переменные хоть и объявляются через implicit, но только в real *4 и integer *4
я оптимизацию выключал в обоих компиляторах. Результаты были получены на одном ПК. Вы тоже считаете, что проблема именно в операциях с плавающей точкой и ничто кроме повышения разрядности не поможет?
Это все понятно, что вещественные числа в REAL *4 не всегда удастся посчитать до последнего знака, вопрос в том, почему программы, по разному скомпилированные по разному считают на одном и том же процессоре?
Mercury13: все работают с реальными данными. Есши у вас накопилась выборка, значит вы можете проверить функцию, нет - нет. Возможно в вашем случае есть какие-то нюансы, которые позволят оценить функцию "без лишних" проверок "реальных" данных, но ни один человек на тостере о них не знает.
Moskus: проблема только в том, что евророзетки иногда делают китайцы, которым не понять всю глубину отношений разных евро стандартов) Это не значит, что нужно сразу же менять евро розетку, иногда очень просто решить проблему с помощью пассатижей)
Moskus: про ток согласен, но таки не все евророзетки полностью обратно-совместимы с советскими вилками, поэтому нужно или их "допиливать" или менять вилки.
Ivan Sokolov: понятно, что вы имели ввиду, но интересуют то нас данные, а не указатели. И передача данных по ссылке подразумевает как раз таки передачу указателя на эти данные. Было бы странно, если бы компилятор решил передавать указатель на указатель, когда нам нужно передать данные по ссылке)
Ivan Sokolov: Как же только по значению, если можно передать указатель? И получается что массивы всегда передаются по ссылке? Значит их можно менять внутри функции в отличие от обычных переменных?
Славка: ну тогда ведь даже постоянную составляющую не нужно отсеивать, ищете два локальных максимума в пределах 1/5 -- 1/20 секунды и находите временной период между ними, тем самым получая период. А 1/период=частота. Максимумы советую искать следующим образом, берете отрезок размером 1/5 сек., находите минимум и по обе стороны от минимума находите максимумы, причем поиск максимумов нужно продолжать, пока или производная не изменит свой знак(при том сама она должна изменяться немного инерционно, для устойчивости к ошибкам) или пока вы не дойдете до точки, всего на 0,2*(max-min) отличающейся от первого минимума - это для случая, когда не нужно избавляться от постоянной составляющей. Очень грубо с точки зрения алгоритмов, но никаких Фурье-преобразований, очень просто и достаточно надежно.
Дѣаволъ: спасибо, советы и вправду дельные. Некоторые я уже использовал давно (выгрузка данных в массивы и работа с ними), а о некоторых и не подозревал (не подумал бы, что select тормозит работу скрипта). Стемминг текста - отличная мысль, однако готовых реализаций для русского языка на vba я так и не нашел, а задачу в целом отложил, ибо не срочная она. По этой причине, скорее всего буду пользоваться методом al_gon, ибо если открывать VS, его метод все-таки универсальнее.
Да, большие массивы в базах данных так хранить не очень удобно, но навряд ли у вас будут очень большие массивы.
2 вариант вполне хорош, когда задач немного. Советую в первую очередь вам оценить реальную нагруженность вашего сервиса пользователями и возможности серверного железа. Дальше уже можно делать выводы)