亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何提高執行時間的性能?他們有什么更好的方式來閱讀這個文件嗎?

如何提高執行時間的性能?他們有什么更好的方式來閱讀這個文件嗎?

慕村9548890 2021-09-15 14:29:31
我正在嘗試使用多個線程拆分文本文件。該文件為 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");    }}
查看完整描述

1 回答

  • 1 回答
  • 0 關注
  • 153 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號