为什么直接使用print()方法存储数据比将其存储在字符串中然后写入文件要快?

影子

让我们考虑一下这种情况:我正在读取一个文件,然后稍微调整每一行,然后将数据存储在一个新文件中。现在,我尝试了两种方法来做到这一点:

  1. 将数据存储在String中,然后像下面这样将其写入目标文件的末尾:

            InputStream ips = new FileInputStream(file);
            InputStreamReader ipsr = new InputStreamReader(ips);
            BufferedReader br = new BufferedReader(ipsr);
    
            PrintWriter desFile = new PrintWriter(targetFilePath);
            String data = "";
            while ((line = br.readLine()) != null) {
                if (line.contains("_Stop_"))
                    continue;
                String[] s = line.split(";");
                String newLine = s[2];
                for (int i = 3; i < s.length; i++) {
                    newLine += "," + s[i];
                }
                data+=newLine+"\n";
            }
            desFile.write(data);
            desFile.close();
            br.close();
    
  2. 在while循环中,直接使用printWriter的println()方法,如下所示:

             while ((line = br.readLine()) != null) {
                if (line.contains("_Stop_"))
                    continue;
                String[] s = line.split(";");
                String newLine = s[2];
                for (int i = 3; i < s.length; i++) {
                    newLine += "," + s[i];
                }
                desFile.println(newLine);
            }
            desFile.close();
            br.close();
    

第二个进程比第一个更快。现在,我的问题是,在这两个过程中发生了什么差异,以至于执行时间差异如此之大?

那个家伙

附加到您的字符串将:

  1. 为新字符串分配内存
  2. 复制以前复制的所有数据。
  3. 复制新字符串中的数据。

您对每一行重复此过程,这意味着对于N行输出,您需要复制O(N ^ 2)个字节。

同时,写给您的PrintWriter将:

  1. 将数据复制到缓冲区。
  2. 偶尔冲洗缓冲区。

这意味着对于N行输出,您仅复制O(N)个字节。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么要使用字符串而不是直接方法调用来触发Redux存储中的操作?

来自分类Dev

使用SED从shellscript中的字符串中删除前X个字符,然后将其存储为变量?

来自分类Dev

从文件中搜索字符串,并使用c将其存储在struct中

来自分类Dev

为什么字符串在PE文件中以如下方式存储

来自分类Dev

在文本文件中的特定字符串之后读取行,然后将数据存储在列表中

来自分类Dev

为什么将其视为对NgRx中存储值的直接修改

来自分类Dev

如何拆分文本文件中的字符串(从原始文件夹检索),然后将其存储到android中两个单独的变量中?

来自分类Dev

在Python中存储字符串的好方法是什么?

来自分类Dev

我如何从非常重的文件中读取字节?然后将其存储在字符串中,例如.pdf .zip .xlsx文件

来自分类Dev

从数据库中获取数据并将其存储在字符串中

来自分类Dev

使用 C# 在文件中存储字符串索引的二进制数据

来自分类Dev

使用文件或文本中的名称存储字符串

来自分类Dev

硒..提取数据,然后将其存储在txt文件中

来自分类Dev

如何从 Firebase 数据库中检索数据并将其存储为字符串?

来自分类Dev

从字符串中取出最后一个字符,将其存储到变量中,然后使用Regex C#删除它

来自分类Dev

使用正则表达式拆分字符串并将其存储到数据帧中

来自分类Dev

如何使用换行符读取字符串并将其存储到Pandas数据框或python列表中

来自分类Dev

使用正则表达式拆分字符串并将其存储到数据帧中

来自分类常见问题

如何在Java中的.txt文件中写入或存储字符串数组

来自分类Dev

如何使用c#ForEach方法使用空格打印数组内容并将其存储在字符串变量中?

来自分类Dev

PHP:需要从字符串数据中搜索文本并将其存储到数组中

来自分类Dev

在文件中查找搜索字符串并将其存储在变量中-TCL

来自分类Dev

使用内部或外部存储设备中的任意一个,在Android中将字符串数组写入/读取字符串文件

来自分类Dev

难以获得游标数据并将其存储在字符串中

来自分类Dev

如何读取字符串数据并只从中获取数字并将其存储在列表中

来自分类Dev

使用字符串方法处理内部html,然后将其放置在具有重复数据的页面中

来自分类Dev

C ++读取文件并将其存储到字符串中

来自分类Dev

从文件中提取子字符串并将其存储在shell变量中

来自分类Dev

流星,为什么散列后密码相同,数据库中存储的字符串不同

Related 相关文章

  1. 1

    为什么要使用字符串而不是直接方法调用来触发Redux存储中的操作?

  2. 2

    使用SED从shellscript中的字符串中删除前X个字符,然后将其存储为变量?

  3. 3

    从文件中搜索字符串,并使用c将其存储在struct中

  4. 4

    为什么字符串在PE文件中以如下方式存储

  5. 5

    在文本文件中的特定字符串之后读取行,然后将数据存储在列表中

  6. 6

    为什么将其视为对NgRx中存储值的直接修改

  7. 7

    如何拆分文本文件中的字符串(从原始文件夹检索),然后将其存储到android中两个单独的变量中?

  8. 8

    在Python中存储字符串的好方法是什么?

  9. 9

    我如何从非常重的文件中读取字节?然后将其存储在字符串中,例如.pdf .zip .xlsx文件

  10. 10

    从数据库中获取数据并将其存储在字符串中

  11. 11

    使用 C# 在文件中存储字符串索引的二进制数据

  12. 12

    使用文件或文本中的名称存储字符串

  13. 13

    硒..提取数据,然后将其存储在txt文件中

  14. 14

    如何从 Firebase 数据库中检索数据并将其存储为字符串?

  15. 15

    从字符串中取出最后一个字符,将其存储到变量中,然后使用Regex C#删除它

  16. 16

    使用正则表达式拆分字符串并将其存储到数据帧中

  17. 17

    如何使用换行符读取字符串并将其存储到Pandas数据框或python列表中

  18. 18

    使用正则表达式拆分字符串并将其存储到数据帧中

  19. 19

    如何在Java中的.txt文件中写入或存储字符串数组

  20. 20

    如何使用c#ForEach方法使用空格打印数组内容并将其存储在字符串变量中?

  21. 21

    PHP:需要从字符串数据中搜索文本并将其存储到数组中

  22. 22

    在文件中查找搜索字符串并将其存储在变量中-TCL

  23. 23

    使用内部或外部存储设备中的任意一个,在Android中将字符串数组写入/读取字符串文件

  24. 24

    难以获得游标数据并将其存储在字符串中

  25. 25

    如何读取字符串数据并只从中获取数字并将其存储在列表中

  26. 26

    使用字符串方法处理内部html,然后将其放置在具有重复数据的页面中

  27. 27

    C ++读取文件并将其存储到字符串中

  28. 28

    从文件中提取子字符串并将其存储在shell变量中

  29. 29

    流星,为什么散列后密码相同,数据库中存储的字符串不同

热门标签

归档