Hirdetés

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

  • beleszólok
    senior tag

    ha már próblgatunk, akkor ezt próbáld még ki C#-al, a komplett using-os rész helyett:

    foreach (var line in File.ReadLines("kern.log"))
    {
    n++;
    }

    Így legalább már pont olyan szép, mint python-nal :)

    És amikor ezzel megvagy, akkor javaslom még a foreach helyett a parallel.foreach-et kipróbálni. Erre gondoltam eredetileg, amikor mondtam, hogy C#-al nagyon egyszerű több processzor magot kihasználni.

    Én anno C#-al (mondjuk nem mono-val, hanem rendes C#-al windows-on) 40Gb-os XML-eket parsoltam, és dolgoztam fel, töltöttem db-be pár órás futásidővel (igaziból a db-be töltés volt a szűk keresztmetszet, pontosabban a db mögötti storage, mivel a DB szerver 96 magos, alig terhelt gép volt).

    Kipróbáltam: egy szálon ugyanaz, több szálon meg nem működőképes úgy, ahogy elképzeltem (a foreach helyett Parallel.Foreach ...), mert úgy fest, ilyenkor számolni sem tud, a doksiban talált példa alapján a a ForEach második paramétereként átadott lambda fv. úgy tűnik nem képes szálbiztosan kezelni a változókat.
    Illetve ez csak feltételezés, az viszont biztos, hogy a fájl eredeti méreténél néggyel kevesebb sort számolt meg.
    Az csak mellékes, hogy mindezt még lassabban is csinálta, mint az egy szálon futó változat. :)
    (mindezt linux alatt, mono-val, virtualbox-ban, szóval nem állítom, hogy ez kizárólag a C# hibája)

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