für LotusScript
Sub Initialize
Dim filename$, filenum%
Dim t1, t2, a%, s$, b%
filename = "c:\temp\ls.txt"
For a = 0 To 99
s = s + "a"
Next
For b = 1 To 20
killFileName filename
t1 = Timer
filenum = Freefile()
Open filename For Output As filenum
For a = 0 To 999
Print #filenum, s
Next
Close(filenum)
t2 = Timer
Print b & " --> " & (t2 - t1) * 1000
Next
End Sub
Sub killFileName( FileName As String)
On Error Goto ErrorZ
Kill FileName
Goto EndeZ
ErrorZ:
Resume EndeZ
EndeZ:
End Sub
Ergebnis in Millisekunden
Hier sind die Ergebnisse für C#. Dennis will nach Hause. (Ergebnisse in Milisekunden).
1:49
2:91
3:7
4:7
5:7
6:31
7:7
8:30
9:7
10:7
11:7
12:7
13:7
14:23
15:44
16:36
17:21
18:7
19:7
20:7
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.Diagnostics;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
for (int j = 1; j <= 20; j++)
{
Stopwatch watch = new Stopwatch();
watch.Start();
StringBuilder sb = new StringBuilder(100);
for (int i = 0; i < 100; i++)
{
sb.Append("a");
}
StreamWriter sw = File.CreateText("C:\\temp\\myCShark.txt");
for (int i = 0; i < 1000; i++)
{
sw.WriteLine(sb.ToString());
}
sw.Close();
watch.Stop();
Console.WriteLine(j.ToString() + ":" + watch.ElapsedMilliseconds.ToString());
}
Console.ReadLine();
}
}
}
Der Code kann sicher noch bedeutend optimiert werden. Das gleiche gilt für den bald folgenden Java Code.
Werte für Java:
1-->31ms
2-->31ms
3-->0ms
4-->16ms
5-->15ms
6-->16ms
7-->0ms
8-->16ms
9-->14ms
10-->15ms
11-->16ms
12-->16ms
13-->15ms
14-->16ms
15-->15ms
16-->16ms
17-->15ms
18-->16ms
19-->16ms
20-->16ms
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
public class IOTest {
public static void main (String args[]) {
for (int j= 1; j< 21;j++) {
long timeStart = System.currentTimeMillis();
File file = new File("C:/temp/javaNoEsLento.txt");
BufferedWriter bw = null;
try {
bw = new BufferedWriter(new FileWriter(file));
StringBuilder sb = new StringBuilder();
for (int i=0; i<100;i++) {
sb.append('a');
}
for (int i= 0;i<1000;i++) {
bw.write(sb.toString() + "\n");
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
try {
if (bw != null) bw.close();
} catch (IOException ioe) {
}
System.out.println(j + "-->" + (System.currentTimeMillis() - timeStart) + "ms");
}
}
}
}
Zugegeben weisen die 0ms auf gewisse Messungenauigkeiten hin.