Çözüldü JAVA ile C# dosya yazma performans farkı

Bu konu çözüldü olarak işaretlenmiştir. Çözülmediğini düşünüyorsanız konuyu rapor edebilirsiniz.
Katılım
5 Mart 2014
Mesajlar
5.701
Makaleler
12
Çözümler
44
Kendi fonksiyon kütüphaneme sahibim. Hem JAVA hem C# için geçerli. Yaptığım testte JAVA performansının düşük, C# performansının yüksek olduğunu fark ettim.

JAVA testinde 2.5 MB'lık dosyayı yazmak 16.5 saniye sürdü.
Java:
        long Time = System.currentTimeMillis();
        Functions.ConsoleMsg("Başlangıç -> " + Time);
        Functions.UpdateText("c.log", "Test");
        long Time2 = System.currentTimeMillis();
        long Time3 = Time2 - Time;
        Functions.ConsoleMsg("Bitiş -> " + Time2);
        Functions.ConsoleMsg(Time3 + " milisaniye sürdü.");

    public static void UpdateText(String File, String Value)
    {
        try
        {
            File Fl = new File(File);
            Scanner Sc = new Scanner(Fl);
            String Val = "";
            while (Sc.hasNextLine())
            {
                Val += Sc.nextLine() + "\n";
            }
            Sc.close();
            PrintStream Ps = new PrintStream(Fl);
            Ps.print(Val + Value);
            Ps.close();
        }
        catch (IOException e)
        {
            System.out.println(e);
        }
    }
C# testinde aynı dosya yazma işlemi 20 milisaniye sürdü.
C#:
            long Time = DateTime.Now.Millisecond;
            Console.WriteLine("Başlangıç -> " + Time);
            File.WriteAllText("c.log", File.ReadAllText("c.log") + "\nTest");
            long Time2 = DateTime.Now.Millisecond;
            long Time3 = Time2 - Time;
            Console.WriteLine("Bitiş -> " + Time2);
            Console.WriteLine(Time3 + " milisaniye sürdü.");
            Console.ReadKey();

Sonuç olarak C# daha hızlı olsa da ben bu sorunun JAVA fonksiyonunda tüm satırları tek tek okuttuğum için olduğunu düşünüyorum. Peki bunu çözmek için ne yapabilirim? Önerilerinizi bekliyorum.
 
Çözüm
Teşekkürler, test ettikten sonra sonucu bildireceğim.
@The Anorak, senin paylaştığın kod dosyayı siliyor. Dosyayı silmeden üzerine yazması lazımdı.
Append durumu hakkında bir şey belirtmediğin için override modunda bir örnek gönderdim.

Java:
  public static void saveFile(File file, String content, boolean append)
  {
    try (BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(file, append), 65536))
    {
      bufferedWriter.write(content);
    }
    catch (IOException e)
    {
      e.printStackTrace();
    }
  }
Hız için BufferedWriter kullanın.

Bkz. BufferedWriter;

Java:
  public static void saveFile(File file, String content)
  {
    try (BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(file), 65536))
    {
      bufferedWriter.write(content);
    }
    catch (IOException e)
    {
      e.printStackTrace();
    }
  }
 
Teşekkürler, test ettikten sonra sonucu bildireceğim.
@The Anorak, senin paylaştığın kod dosyayı siliyor. Dosyayı silmeden üzerine yazması lazımdı.
 
Teşekkürler, test ettikten sonra sonucu bildireceğim.
@The Anorak, senin paylaştığın kod dosyayı siliyor. Dosyayı silmeden üzerine yazması lazımdı.
Append durumu hakkında bir şey belirtmediğin için override modunda bir örnek gönderdim.

Java:
  public static void saveFile(File file, String content, boolean append)
  {
    try (BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(file, append), 65536))
    {
      bufferedWriter.write(content);
    }
    catch (IOException e)
    {
      e.printStackTrace();
    }
  }
 
Çözüm
Evet, bu işe yaradı. Teşekkürler.
 
Bu siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için çerezleri kabul etmelisiniz. Daha Fazlasını Öğren.…