powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / быстрый поиск в файле
13 сообщений из 38, страница 2 из 2
быстрый поиск в файле
    #34097768
Kachalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
он же
Боюсь, основы плохо знакомы.
Иначе вы не говорили бы, что 3.5 сек (моё решение) и 5.8 сек (BufferedReader) - это одинаковая скорость. И это в случае уже закэшированного виндой файлика.
Если обрабатываем с чтением, то цифры:
Proceed 290374304 bytes records in 11031 msec with 6178176 failures
Proceed 287888895 buffered bytes in 26422 msec with 2537871 failures
Только тут не совсем честно, т.к. файлы совершенно произвольные.

- на одном и том же файле с данными размером 500Мб (искомые данные в последней строке), Ваш вариант поиска дал 18266 мс, а заметно более простой код с использованием BufferedReader и метода startsWith для поиска вхождения в строку, дал 25610 мс. Разница в быстродействии около 30% (хотя сознаюсь, я и такой не ожидал), а в сложности кода 3-х кратная.
На всякий случай приведу пример кода (хотя он совершенно тривиальный), чтобы не было разночтений:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
 import  java.io.*;

 public   class  ReaderBuffered {

     public   static   void  main (String[] arg)  throws  Exception {
        String file="test.dat";
         boolean  find=false;
        BufferedReader in= new  BufferedReader( new  FileReader(file));
         long  startTime=System.currentTimeMillis();
        String line= null ;
         while ((line=in.readLine())!= null ){
            //pseudo smart activity
             if (line.startsWith("0123456ok")){
                find=true;
                 break ;
            }
        }
        System.out.println("search time: "+(System.currentTimeMillis()-startTime)+" msec");
        System.out.println("find string: "+find);
        in.close();
    }
    
}
...
Рейтинг: 0 / 0
быстрый поиск в файле
    #34097797
он же
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
(' 1234567 ').startsWith != (' 1234567 8899').substring(0,9).trim()

Хотя может автору это и не нужно.
...
Рейтинг: 0 / 0
быстрый поиск в файле
    #34097802
он же
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
!= - это конечно означает "не равны" (не равны методом equals) :)
чтобы не было разночтений :)
...
Рейтинг: 0 / 0
быстрый поиск в файле
    #34097890
Kachalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
он же!= - это конечно означает "не равны" (не равны методом equals) :)
чтобы не было разночтений :)
- это был один из тезисов: "оптимизировать работу с текстом" :)

- изначально сравнение производил на Windows 2000 диск SATA:
Код: plaintext
1.
2.
   25610 мс BufferedReader
   18266 мс RandomAccessFile + arraycopy

- решил проверить на Linux FC4 и SATA RAID 1 (процессоры и материнские платы на сравниваемых машинах одинаковые) и получил интересный результат:
Код: plaintext
1.
2.
   13994 мс BufferedReader
   15567 мс RandomAccessFile + arraycopy
...
Рейтинг: 0 / 0
быстрый поиск в файле
    #34098256
он же
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kachalov
Код: plaintext
1.
2.
   13994 мс BufferedReader
   15567 мс RandomAccessFile + arraycopy

Усредненное из 3-5 попыток?
Или после перезагрузки и принудительной очистки файла подкачки?

Если сразу же друг за другом - эксперимент не выдерживает никакой критики :)
...
Рейтинг: 0 / 0
быстрый поиск в файле
    #34098385
Kachalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
он же
Если сразу же друг за другом - эксперимент не выдерживает никакой критики :)
- 3 попытки по очереди для каждого примера, т. е. пример1-пример2-пример1-пример2 и т. д.

- усреднять не стал, взял не крайние значения

- Linux сервер рабочий, средне нагруженый, паралелльно с тестами работал web-сервер и БД что, я думаю, хорошо отражает реальные условия работы.

- если не лень погоняйте примеры сами на разных машинах, а то как цифры не нравятся, так "эксперимент не выдерживает никакой критики", а как получается удобный результат, так никаких вопросов о качестве тестов не возникает :)
...
Рейтинг: 0 / 0
быстрый поиск в файле
    #34098513
он же
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kachalov
- если не лень погоняйте примеры сами на разных машинах, а то как цифры не нравятся, так "эксперимент не выдерживает никакой критики", а как получается удобный результат, так никаких вопросов о качестве тестов не возникает :)
Я не сомневаюсь в своих тестах, т.к. сам их проводил :)
А про вас мне ничего не известно. Может вы злой и хитрый

Ладно, что-то отклонились от темы :)
...
Рейтинг: 0 / 0
быстрый поиск в файле
    #34098634
json
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
http://forum.java.sun.com/thread.jspa?threadID=476507&tstart=60

искать в тексте слова: public class searcher
...
Рейтинг: 0 / 0
быстрый поиск в файле
    #34098650
json
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
быстрый поиск в файле
    #34099143
Solaroid
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Kachalov он же!= - это конечно означает "не равны" (не равны методом equals) :)
чтобы не было разночтений :)
- это был один из тезисов: "оптимизировать работу с текстом" :)

- изначально сравнение производил на Windows 2000 диск SATA:
Код: plaintext
1.
2.
   25610 мс BufferedReader
   18266 мс RandomAccessFile + arraycopy

- решил проверить на Linux FC4 и SATA RAID 1 (процессоры и материнские платы на сравниваемых машинах одинаковые) и получил интересный результат:
Код: plaintext
1.
2.
   13994 мс BufferedReader
   15567 мс RandomAccessFile + arraycopy
Где взять стомегабайтный файл? И что вы в нем ищете?
...
Рейтинг: 0 / 0
быстрый поиск в файле
    #34099259
Kachalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SolaroidГде взять стомегабайтный файл? И что вы в нем ищете?
- думаю это вопрос не ко мне :) посмотрите на первое сообщение в теме.
...
Рейтинг: 0 / 0
быстрый поиск в файле
    #34099438
Гость1111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Solaroid Kachalov он же!= - это конечно означает "не равны" (не равны методом equals) :)
чтобы не было разночтений :)
- это был один из тезисов: "оптимизировать работу с текстом" :)

- изначально сравнение производил на Windows 2000 диск SATA:
Код: plaintext
1.
2.
   25610 мс BufferedReader
   18266 мс RandomAccessFile + arraycopy

- решил проверить на Linux FC4 и SATA RAID 1 (процессоры и материнские платы на сравниваемых машинах одинаковые) и получил интересный результат:
Код: plaintext
1.
2.
   13994 мс BufferedReader
   15567 мс RandomAccessFile + arraycopy
Где взять стомегабайтный файл? И что вы в нем ищете?

100М это средний файлик, есть еще и 150-200М, записи в них не большие, но их много (150М окло 3,5 млн.записей) и это объем данных за один день, а искть нужно в данных за месяц...
Дело в том, что хранить данные записи файлов (это телефония) в данный момент в БД возможности нет, поэтому реализован поиск в файлах (которые с сетевого ресурса замапены на никс).

На данный момент самое быстрое найденное решение (для моего случая работы с БД Оракле) - это использование sqlloadera и с установкой фильтра в ctl-файле (да простят меня те, кто не работает с Оралке)

Тема разумеется еще не закрыта - буду копать дальше в сторону Java, но уж больно Оракле заточил хорошо свой SQLLOADER, боюсь в данном случае это будет самым оптимальным решением.

Большое спасибо ВСЕМ, кто принял и примет участие! ;)
...
Рейтинг: 0 / 0
быстрый поиск в файле
    #34470989
Master Alex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гость1111
100М это средний файлик, есть еще и 150-200М, записи в них не большие, но их много (150М окло 3,5 млн.записей) и это объем данных за один день, а искть нужно в данных за месяц...
Дело в том, что хранить данные записи файлов (это телефония) в данный момент в БД возможности нет, поэтому реализован поиск в файлах (которые с сетевого ресурса замапены на никс).


Индексы стоить для файлов и класть рядом не пробовали?
...
Рейтинг: 0 / 0
13 сообщений из 38, страница 2 из 2
Форумы / Java [игнор отключен] [закрыт для гостей] / быстрый поиск в файле
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]