猿问

如何提高执行时间的性能?他们有什么更好的方式来阅读这个文件吗?

我正在尝试使用多个线程拆分文本文件。该文件为 1 GB。我正在按字符读取文件。执行时间为 24 分 54 秒。不是按字符读取文件是他们减少执行时间的更好方法。我很难找到一种可以减少执行时间的方法。如果还有其他更好的方法可以用多个线程拆分文件,也请给我建议。我对java很陌生。


任何帮助将不胜感激。:)


    public static void main(String[] args) throws Exception {

        RandomAccessFile raf = new RandomAccessFile("D:\\sample\\file.txt", "r");

        long numSplits = 10;

        long sourceSize = raf.length();

        System.out.println("file length:" + sourceSize);

        long bytesPerSplit = sourceSize / numSplits;

        long remainingBytes = sourceSize % numSplits;


        int maxReadBufferSize = 9 * 1024;


        List<String> filePositionList = new ArrayList<String>();

        long startPosition = 0;

        long endPosition = bytesPerSplit;

        for (int i = 0; i < numSplits; i++) {

            raf.seek(endPosition);

            String strData = raf.readLine();

            if (strData != null) {

                endPosition = endPosition + strData.length();

            }

            String str = startPosition + "|" + endPosition;

            if (sourceSize > endPosition) {

                startPosition = endPosition;

                endPosition = startPosition + bytesPerSplit;

            } else {

                break;

            }

            filePositionList.add(str);

        }


        for (int i = 0; i < filePositionList.size(); i++) {


            String str = filePositionList.get(i);

            String[] strArr = str.split("\\|");

            String strStartPosition = strArr[0];

            String strEndPosition = strArr[1];

            long startPositionFile = Long.parseLong(strStartPosition);

            long endPositionFile = Long.parseLong(strEndPosition);

            MultithreadedSplit objMultithreadedSplit = new MultithreadedSplit(startPositionFile, endPositionFile);

            objMultithreadedSplit.start();

        }


        long endTime = System.currentTimeMillis();


        System.out.println("It took " + (endTime - startTime) + " milliseconds");

    }


}


慕村9548890
浏览 138回答 1
1回答
随时随地看视频慕课网APP

相关分类

Java
我要回答