Új hozzászólás Aktív témák

  • beleszólok

    senior tag

    válasz Sk8erPeter #8315 üzenetére

    Sokra nem mentek vele :)

    namespace monosandbox
    {
    public class Hello
    {

    public static void Main(string[] argv){
    int n = 0;
    Console.WriteLine (System.IO.Directory.GetCurrentDirectory ());

    using (StreamReader sr=File.OpenText("kern.log")) {
    String s;

    while ((s=sr.ReadLine()) != null) {
    n++;
    }
    }
    Console.WriteLine (n);

    }
    }
    }

    Ennél primitívebb kódot nehéz lenne összehozni.
    A StreamReader bufferelésével játszadoztam egy sort, de csak rontani tudtam rajta.
    A fenti kód, így ahogy van, picit több, mint 22mp-ig fut - most lemértem.
    Ugyanez a feladvány, csak pythonban 3.6mp.

    f=open("kern.log","r")

    n=0
    for i in f:
    n+=1

    print n

    Valamit nagyon trükkösen csinál, mert ha a fenti kód helyett egy ilyet csinálok:

    f=open("kern.log","r")
    l=f.readlines()
    print(len(l))

    akkor elvileg betölti memóriába az egész fájlt, gyakorlatilag iszonyat gyorsan végig tud menni rajta, még sincs bent minden, mivel a fájl közel akkora, mint a teszteléshez használt virtuális gép memóriája és az elég feltűnő, ha megtöltöm. :) A readlines() helyett read()-t használva elég szembetűnő a különbség.
    (1.6GB a fájl és 2GB-ja van a VM-nek)

    [ Szerkesztve ]

    Tiszavirág: http://youtu.be/YdcsiW0kfso

Új hozzászólás Aktív témák