Sne*_*n27 1 java performance serialization full-text-search
您好我正在尝试在java中实现向量空间模型.我使用td-idf索引了大约1000个文档,我使用这个索引来搜索文档.
我认为我用于索引的类的构造函数占用了太多时间,所以我决定序列化并将创建后的对象写入文本文件,例如indexedFiles.txt
所以现在我每次想要搜索这样的集合时都会读取文本文件
fileInputStream = new FileInputStream("indexedFiles.txt");
ObjectInputStream objectInputStream = new ObjectInputStream(fileInputStream);
VSM vsm = (VSM) objectInputStream.readObject();//This statement take the most time ,
objectInputStream.close();
Run Code Online (Sandbox Code Playgroud)
但是readObject和cast语句与原始构造函数大致相同.
为什么会这样?,我这样做的原因是我想离线索引,所以搜索会很快
use*_*421 16
fileInputStream = new FileInputStream("indexedFiles.txt");
ObjectInputStream objectInputStream = new ObjectInputStream(fileInputStream);
Run Code Online (Sandbox Code Playgroud)
尝试使用和BufferedInputStream之间的操作.这将使I/O系统调用减少8倍.FileInputStreamObjectInputStream.
我在实践中发现它减少了将ArrayList<>1,000,000个项目从213s 反序列化到9s的时间.