Why is that more performant ? Using a buffered writer is actually slower
when you know the bytes to write. I don't think it's an improvement. We had
removed buffering in the past for that same reason.

2017-12-12 12:54 GMT+01:00 <sun...@apache.org>:

> Repository: groovy
> Updated Branches:
>   refs/heads/master dc30ad7d1 -> 1b248d367
>
>
> Refine DgmConverter to gain better IO performance
>
>
> Project: http://git-wip-us.apache.org/repos/asf/groovy/repo
> Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/1b248d36
> Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/1b248d36
> Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/1b248d36
>
> Branch: refs/heads/master
> Commit: 1b248d367d7e931becdcc47eaffc9073b2851ac2
> Parents: dc30ad7
> Author: sunlan <sun...@apache.org>
> Authored: Tue Dec 12 19:54:35 2017 +0800
> Committer: sunlan <sun...@apache.org>
> Committed: Tue Dec 12 19:54:35 2017 +0800
>
> ----------------------------------------------------------------------
>  .../org/codehaus/groovy/tools/DgmConverter.java | 20 ++++++++++++++++----
>  1 file changed, 16 insertions(+), 4 deletions(-)
> ----------------------------------------------------------------------
>
>
> http://git-wip-us.apache.org/repos/asf/groovy/blob/1b248d36/src/main/org/
> codehaus/groovy/tools/DgmConverter.java
> ----------------------------------------------------------------------
> diff --git a/src/main/org/codehaus/groovy/tools/DgmConverter.java
> b/src/main/org/codehaus/groovy/tools/DgmConverter.java
> index ba714bb..5228a93 100644
> --- a/src/main/org/codehaus/groovy/tools/DgmConverter.java
> +++ b/src/main/org/codehaus/groovy/tools/DgmConverter.java
> @@ -29,6 +29,7 @@ import org.objectweb.asm.Label;
>  import org.objectweb.asm.MethodVisitor;
>  import org.objectweb.asm.Opcodes;
>
> +import java.io.BufferedOutputStream;
>  import java.io.File;
>  import java.io.FileOutputStream;
>  import java.io.IOException;
> @@ -93,12 +94,23 @@ public class DgmConverter implements Opcodes {
>              cw.visitEnd();
>
>              final byte[] bytes = cw.toByteArray();
> +
>              File targetFile = new File(targetDirectory + className +
> ".class").getCanonicalFile();
>              targetFile.getParentFile().mkdirs();
> -            final FileOutputStream fileOutputStream = new
> FileOutputStream(targetFile);
> -            fileOutputStream.write(bytes);
> -            fileOutputStream.flush();
> -            fileOutputStream.close();
> +
> +            BufferedOutputStream bufferedOutputStream = null;
> +            try {
> +                bufferedOutputStream =
> +                        new BufferedOutputStream(
> +                                new FileOutputStream(targetFile));
> +
> +                bufferedOutputStream.write(bytes);
> +                bufferedOutputStream.flush();
> +            } finally {
> +                if (null != bufferedOutputStream) {
> +                    bufferedOutputStream.close();
> +                }
> +            }
>          }
>
>          GeneratedMetaMethod.DgmMethodRecord.saveDgmInfo(records,
> targetDirectory+"/META-INF/dgminfo");
>
>

Reply via email to