2012-09-02 10 views
8

Eclipse przeszukuje duży projekt dla wszystkich dopasowań do frazy (nawet wyrażenia regularnego) zaskakująco szybko.W jaki sposób Eclipse wykonuje tak szybkie wyszukiwanie trafień w wyrażeniu/regexp

Czy używają wewnętrznie java.util.regex?
Zakładam, że nie są one indeksowane za pomocą wyszukiwarki, ponieważ ich wyszukiwania są zbyt wolne, ale jest pewne opóźnienie przy pierwszym wyszukiwaniu po uruchomieniu zaćmienia.

+0

myślę robią użyć trochę podziałowe których indeksy są przechowywane w .metadata/.plugins/org.eclipse.jdt.core – Vikdor

+0

Ale podziałowe nie będzie taryfy zbyt dobrze z ogólnym wyrażeniem regularnego wyszukiwania, które również wydaje się dość szybkie w czasie zaćmienia. –

+6

eclipse znacznie poprawił wydajność zadań związanych z wyszukiwaniem kodu, takich jak wyszukiwanie odwołań, tworzenie hierarchii typów, a nawet uzupełnianie kodu. Wynika to z nowego projektu, zainspirowanego przez nWire, który wykorzystuje silnik bazy danych h2 jako trwały magazyn dla tych danych. –

Odpowiedz

1

Eclipse Helios (3.6) zawiera ulepszoną wersję Eclipse PDT, oznaczoną jako 2.2. Jest również zawarty w aktualnym Zend Studio (7.1 i powyżej). Wśród innych ulepszeń znacznie poprawiła wydajność wykonywania zadań związanych z wyszukiwaniem kodu, takich jak wyszukiwanie, , tworząc hierarchię typów, a nawet kończąc kod. Wynika to z nowego projektu, zainspirowanego przez nWire, który korzysta z silnika bazy danych h2 jako trwałej pamięci masowej dla tych danych .

Baza danych h2 jest wysokowydajnym, nisko profilowym, macierzystym silnikiem baz danych Java , utworzonym jako następca szeroko stosowanego HSQLDB. To jest open source i do darmowego użytku. nWire używa h2 od jego wczesnych dni.

Źródło: http://www.nwiresoftware.com/blogs/nwire/2010/09/five-tips-speeding-eclipse-pdt-and-nwire

Krótko mówiąc, wygląda na to widzisz te ulepszenia, ponieważ Eclipse wykorzystuje silnik bazy danych.

Następnie, jeśli kopiesz trochę głębiej, oto quick sampling if the H2 source code; to rzeczywiście wyglądają jak oni wykorzystując java.util.regex:

20 import java.util.regex.Matcher; 
21 import java.util.regex.Pattern; 
Powiązane problemy