![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| TupleCa |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 110 Регистрация: 7.11.2006 Репутация: нет Всего: нет |
в файле d.dat содержится 181440 полей. (в дальнейшем надо около 1 триллиона)
вот код, как я ищу нужную строку по заданному ключу m
Время поиска : 920.880383 миллисеунд. Примерно 0.920 секунды Это УЖАСНО долго на самом деле. нужно не более чем 0.1 секунда. я думаю что основное время затрачивается на
потому-что каждый раз при исполнении. это выполняется. вопрос 1: можно ли как-то сразу при компиляции загрузить этот файд d.dat. что бы исполнении его уже не надо было загружать. вопрос 2: какой есть более эффективный способ хранения информации, что бы затраты(по времени) на поиск нужного значения были сведены к минимуму. |
||||
|
|||||
| shimopus |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 103 Регистрация: 25.8.2006 Репутация: 1 Всего: 1 |
1. А зачем при компиляции? Можно при запуске сразу считывать его, но это будет неоправданно, на мой взгляд, забивать ОП. Особенно, когда там будет триллион записей. А при компиляции - это сразу же создать явно переменную, проинициализированную информацией из d.dat
2. Ну самый быстрый - это в ОП. Из других... может быть БД? Это сообщение отредактировал(а) shimopus - 9.12.2006, 14:37 |
|||
|
||||
| powerOn |
|
|||
![]() software saboteur ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4367 Регистрация: 7.10.2005 Репутация: 47 Всего: 159 |
Используйте индексирование. При нем, сначало строится оптимизированный файл индекса. А поиск происходит только по нему (индексу). Вот вам в помощь Apache Lucene. |
|||
|
||||
| TupleCa |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 110 Регистрация: 7.11.2006 Репутация: нет Всего: нет |
как вот это
выполнить сразу при объявлении ht. d.dat 6мб, впринцыпе для меня это не критично. зато скорость 0.360242 миллисеунд. |
|||
|
||||
| _Y_ |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1651 Регистрация: 27.11.2006 Репутация: 5 Всего: 34 |
Когда-то, лет 12 назад, на первом еще VB я столкнулся с проблемой булева поиска в текстовой БД. На тот момент и память была маленькой и процессор быстро информацию не жевал. Решение было примерно такое:
-------------------- Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:) |
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
По моему в данном случае явное непонимание, того как это все должно работать. В данном случае без индекса не обойтись, можно его делать руками, как описал _Y_. Можно использовать готовы решения типа Apache Lucene. А можно просто использовать механизм индексирования СУБД.
P.S. Прикола ради посчитай сколько это 1 триллион записей по 10 байт ;) -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| Tony |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1159 Регистрация: 3.3.2006 Где: Riga Репутация: нет Всего: 12 |
Бери FileChanel класс. И 4итай нужное коли4ество байт а не всю строку за раз.
ID 32(bytes) stroka(255bytes) dfmg493t04kdhfgdfh...............Moja.stroka........ 893bg8gb43t934t43...............Stoka.nomer.2.... Так вот во время 4теня ты 4итешь 32 байта если ID=запросу ID, to 4итаешь следующие 255 байт. Если не равны то пропускаеш 255 байт fileChanel.position(fileChannel.position()+255). |
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |