返回列表 發帖

APCS - Java 高效讀取 (三)

做大量輸出時,以 StringBuilder 串接好再一次輸出,取代跑多次迴圈輸出,以獲取更高的效能。更不要以 String 串接後再輸出,此方式效能最差。

以輸出 1~10000 數字為例:

迴圈輸出


StringBuilder 串接


String 串接
  1. public class Ch100 {

  2.     long s, e;

  3.     Ch100()
  4.     {
  5.         s=System.currentTimeMillis();
  6.         //test1();
  7.         test2();
  8.         //test3();
  9.         e=System.currentTimeMillis();
  10.         System.out.println("花費: "+(e-s)+" 毫秒");
  11.     }

  12.     void test1()
  13.     {
  14.         for(int i=1; i<=10000; i++)
  15.             System.out.println(i);
  16.         System.out.println();
  17.     }

  18.     void test2()
  19.     {
  20.         StringBuilder sb=new StringBuilder();
  21.         for(int i=1; i<=10000; i++)
  22.             sb.append(i+"\n");
  23.         System.out.println(sb);
  24.     }

  25.     void test3()
  26.     {
  27.         String str="";
  28.         for(int i=1; i<=10000; i++)
  29.             str+=i+"\n";
  30.         System.out.println(str);
  31.     }

  32.     public static void main(String[] args) {
  33.         new Ch100();
  34.     }
  35. }
複製代碼

  1. public class C521 {
  2.     long s,e;
  3.         C521() throws Exception
  4.     {
  5.             s=System.currentTimeMillis();
  6.             test3();
  7.             e=System.currentTimeMillis();
  8.             System.out.println("花費:"+(e-s)+" 毫秒");
  9.            
  10.     }
  11.         void test1()
  12.         {
  13.                 for(int i=1;i<=10000;i++)
  14.                         System.out.println(i);
  15.         }
  16.         void test2()
  17.         {
  18.                 StringBuilder sb=new StringBuilder();
  19.                 for(int i=1;i<=10000;i++)
  20.                         sb.append(i+"\n");
  21.                 System.out.println(sb);
  22.         }
  23.         void test3()
  24.         {
  25.                 String str=" ";
  26.                 for(int i=1;i<=10000;i++)
  27.                         str+=i+"\n";
  28.                 System.out.println(str);
  29.         }
  30.     public static void main(String[] args) throws Exception{
  31.                 new C521();
  32.         }
  33. }
複製代碼

TOP

  1. public class Ch100 {
  2.        
  3.         long s, e;
  4.        
  5.         void Test1() {
  6.                 for (int i = 1; i <= 10000; i++)
  7.                         System.out.println(i);
  8.                 System.out.println();
  9.         }
  10.        
  11.         void Test2() {
  12.                 StringBuilder sb = new StringBuilder();
  13.                 for (int i = 1; i <= 10000; i++)
  14.                         sb.append(i + "\n");
  15.                 System.out.println(sb);
  16.         }
  17.        
  18.         void Test3() {
  19.                 String str = "";
  20.                 for (int i = 1; i <= 10000; i++)
  21.                         str += i + "\n";
  22.                 System.out.println(str);
  23.         }

  24.         Ch100() {
  25.                 s = System.currentTimeMillis();
  26.                 Test1();
  27.                 Test2();
  28.                 Test3();
  29.                 e = System.currentTimeMillis();
  30.                 System.out.println("花費:" + (e-s) + "毫秒");
  31.         }

  32.         public static void main(String[] args) {
  33.                 new Ch100();
  34.         }

  35. }
複製代碼

TOP

  1. package lol;

  2. public class Main {

  3.         long s,e;
  4.         Main()
  5.         {
  6.                 s=System.currentTimeMillis();
  7.                 test1();
  8.                 test2();
  9.                 test3();
  10.                 e=System.currentTimeMillis();
  11.                 System.out.println("花費: "+(e-s)+" 毫秒");
  12.         }
  13.        
  14.         void test1()
  15.         {
  16.                 for(int i=1;i<=10000;i++)
  17.                 {
  18.                         System.out.println(i);
  19.                 }
  20.                 System.out.println();
  21.         }
  22.         void test2()
  23.         {
  24.                 StringBuilder sb=new StringBuilder();
  25.                 for(int i=1;i<=10000;i++)
  26.                         sb.append(i+"\n");
  27.                 System.out.println();
  28.         }
  29.         void test3()
  30.         {
  31.                 String n="";
  32.                 for(int i=1;i<=10000;i++)
  33.                         n+=i+"\n";
  34.                 System.out.println();
  35.         }
  36.         public static void main(String[] args) throws Exception{
  37.                 new Main();
  38.         }

  39. }
複製代碼

TOP

  1. public class P5 {

  2.     long s, e;

  3.     P5()
  4.     {
  5.         s=System.currentTimeMillis();
  6.         test2();
  7.         e=System.currentTimeMillis();
  8.         System.out.println("花費: "+(e-s)+" 毫秒");
  9.     }

  10.     void test1()
  11.     {
  12.         for(int i=1; i<=10000; i++)
  13.             System.out.println(i);
  14.         System.out.println();
  15.     }

  16.     void test2()
  17.     {
  18.         StringBuilder sb=new StringBuilder();
  19.         for(int i=1; i<=10000; i++)
  20.             sb.append(i+"\n");
  21.         System.out.println(sb);
  22.     }

  23.     void test3()
  24.     {
  25.         String str="";
  26.         for(int i=1; i<=10000; i++)
  27.             str+=i+"\n";
  28.         System.out.println(str);
  29.     }

  30.     public static void main(String[] args) {
  31.         new P5();
  32.     }
  33. }
複製代碼

TOP

  1. public class Ch01 {
  2.         long s , e;
  3.         Ch01()
  4.         {
  5.                 s=System.currentTimeMillis();
  6.                 test2();
  7.                 e=System.currentTimeMillis();
  8.                 System.out.println("花費: "+(e-s)+" 毫秒");
  9.         }

  10.         void test1()
  11.         {
  12.                 for(int i=1; i<=10000; i++)
  13.                         System.out.println(i);
  14.                 System.out.println();
  15.         }

  16.         void test2()
  17.         {
  18.                 StringBuilder sb=new StringBuilder();
  19.                 for(int i=1; i<=10000; i++)
  20.                         sb.append(i+"\n");
  21.                 System.out.println(sb);
  22.         }

  23.         void test3()
  24.         {
  25.                 String str="";
  26.                 for(int i=1; i<=10000; i++)
  27.                         str=i+"\n";
  28.                 System.out.println(str);
  29.         }

  30.         public static void main(String[] args) {
  31.                 new Ch01();
  32.         }
  33. }
複製代碼

TOP

  1. public class Ch49 {
  2.     long s,e;
  3.         Ch49() throws Exception
  4.         {
  5.                 s=System.currentTimeMillis();
  6.                 test1();
  7.                 test2();
  8.                 test3();
  9.                
  10.                
  11.                 e=System.currentTimeMillis();
  12.         System.out.println("use"+(e-s)+"毫秒");
  13.         
  14.         }
  15.         void test1()
  16.         {
  17.                 for(int i=1;i<=10000;i++)
  18.                         System.out.println(i);
  19.                 System.out.println();
  20.         }
  21.        
  22.         void test2()
  23.         {
  24.                 StringBuilder sb=new StringBuilder();
  25.                 for(int i=1;i<=10000;i++)
  26.                         sb.append(i+"\n");
  27.                 System.out.println(sb);
  28.         }
  29.        void test3()
  30.        {
  31.                String str="";
  32.                for(int i=1;i<=10000;i++)
  33.                 str+=i+"\n";
  34.                System.out.println(str);
  35.        }
  36.        public static void main(String[] args)
  37.        {
  38.          new Ch49();
  39.        }
  40.       
  41.         }
複製代碼

TOP

  1. public class B3 {
  2.        
  3.         long s,e;
  4.         B3(){
  5.                 s=System.currentTimeMillis();
  6.                 //test1();
  7.                 //test2();
  8.                 test3();
  9.                 e=System.currentTimeMillis();
  10.                 System.out.println("花費: "+(e-s)+" 毫秒");
  11.         }
  12.         void test1(){
  13.                 for(int i=1;i<=10000;i++)
  14.                         System.out.println(i);
  15.                 System.out.println();
  16.         }
  17.         void test2(){
  18.                 StringBuilder sb=new StringBuilder();
  19.                 for(int i=1;i<=10000;i++)
  20.                         sb.append(i+"\n");
  21.                 System.out.println(sb);
  22.         }
  23.         void test3(){
  24.                 String str="";
  25.                 for(int i=1;i<=10000;i++)
  26.                         str+=i+"\n";
  27.                 System.out.println(str);
  28.         }
  29.         public static void main(String[] args) {
  30.                 new B3();
  31.         }

  32. }
複製代碼

TOP

  1. public class Ch100 {

  2.     long s, e;

  3.     Ch100()
  4.     {
  5.         s=System.currentTimeMillis();
  6.         //test1();
  7.         test2();
  8.         //test3();
  9.         e=System.currentTimeMillis();
  10.         System.out.println("花費: "+(e-s)+" 毫秒");
  11.     }

  12.     void test1()
  13.     {
  14.         for(int i=1; i<=10000; i++)
  15.             System.out.println(i);
  16.         System.out.println();
  17.     }

  18.     void test2()
  19.     {
  20.         StringBuilder sb=new StringBuilder();
  21.         for(int i=1; i<=10000; i++)
  22.             sb.append(i+"\n");
  23.         System.out.println(sb);
  24.     }

  25.     void test3()
  26.     {
  27.         String str="";
  28.         for(int i=1; i<=10000; i++)
  29.             str+=i+"\n";
  30.         System.out.println(str);
  31.     }

  32.     public static void main(String[] args) {
  33.         new Ch100();
  34.     }
  35. }
複製代碼

TOP

  1. package ch02;


  2. public class ch02 {
  3.         long a,b,c,d,e,f;
  4.        
  5.        
  6.         ch02()
  7.         {
  8.                 a=System.currentTimeMillis();
  9.                 test1();
  10.                 b=System.currentTimeMillis();
  11.                 System.out.println("共花費"+(b-a)+"毫秒");
  12.                
  13.         }
  14.         void test1()
  15.         {
  16.                 for(int i=1;i<=10000;i++)
  17.                         System.out.println(i);
  18.                
  19.         }
  20.         void test2()
  21.         {
  22.                 StringBuilder sb=new StringBuilder();
  23.                 for(int i=1;i<=10000;i++)
  24.                         sb.append(i+"\n");
  25.                 System.out.println(sb);
  26.         }
  27.         void test3()
  28.         {
  29.                 String str="";
  30.                 for(int i=1;i<=10000;i++)
  31.                         str=str+i+"\n";
  32.                 System.out.println(str);
  33.         }
  34.         public static void main(String[] args){
  35.                 new ch02();

  36.         }

  37. }
複製代碼

TOP

  1. public class A01 {
  2.         long a,b;
  3.        
  4.         A01(){
  5.                 a=System.currentTimeMillis();
  6.         test2();
  7.                 b=System.currentTimeMillis();
  8.                 System.out.print("花費:"+(b-a)+"毫秒");
  9.         }
  10.         void test1()
  11.         {
  12.                 for(int i=1;i<=10000;i++)
  13.                 {
  14.                         System.out.println(i);
  15.                 }
  16.                 System.out.println();
  17.         }
  18.         void test2()
  19.         {
  20.                 StringBuilder sb=new StringBuilder();
  21.                 for(int i=1;i<=10000;i++)
  22.                 {
  23.                         sb.append(i+"\n");
  24.                 }
  25.                 System.out.println(sb);
  26.         }
  27.         void test3()
  28.         {
  29.                 String str="";
  30.         for(int i=1; i<=10000; i++)
  31.         {
  32.                 str+=i+"\n";
  33.         }
  34.         System.out.println(str);
  35.         }
  36.         public static void main(String[] args){
  37.                 new A01();
  38.         }
  39. }
複製代碼

TOP

返回列表