Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Snabbaste sättet att läsa in rader och söka efter strängmönster från fil.

Postades av 2008-11-09 20:20:16 - Håkan Borneland, i forum c# (c-sharp), Tråden har 9 Kommentarer och lästs av 879 personer

Hej,

Letar efter det snabbaste (alltid intressant) sättet att i C# läsa in rader från en fil (en loggfil),
och sedan leta efter två strängmönster.
Ett som ska finnas ("<0A><05><0C>"), och ett som inte får finnas ("NONAME").
Det finns ju ett antal till buds stående metoder (som man kan kombinera) för att lösa detta.
Håller på och testar just nu, men är intresserad att se om det finns andra (och snabbare) sätt,
än dom som jag kommer på.

Har ni några ideér?


Svara

Sv: Snabbaste sättet att läsa in rader och söka efter strängmönster från fil.

Postades av 2008-11-09 21:38:26 - Samuel Adolfsson

Läs in rad. Kolla matchning med regex. Enkelt, men snabbast är det kanske inte.

Det snabbaste borde ju vara att förbehandla loggfilen genom att indexera den och sen söka i indexet (om man räknar bort förbehandlingstiden förstås.. :).


Svara

Sv: Snabbaste sättet att läsa in rader och söka efter strängmönster från fil.

Postades av 2008-11-09 21:59:38 - Martin Adrian

Snabbast är att läsa in hela filen i en sträng och söka med regex.

Om filen kan vara stor skulle jag använda en regex stream. Finns ingen inbyggd i BCL men googla lite så hittar du nog någon bra (t.ex. http://www.codeguru.com/columns/experts/article.php/c14689)

Om du väljer att istället läsa en rad i taget så tänk på att bara skapa regex:en en gång.
(Regex bygger upp en tillståndsmaskin från mönstret och det är en ganska komplicerad process)

dvs

Regex rx = new Regex("pattern");

for each row in file
Matches = rs.Matches(row);

istället för

for each row in file
Matches = Regex.Matches(row, pattern);


Finns också möjligheten att skapa en special regex-sök-assembly från ditt mönster. Har aldrig använt det men det borde vara det snabbaste man kan få.


Svara

Sv:Snabbaste sättet att läsa in rader och söka efter strängmönster från fil.

Postades av 2008-11-09 23:07:32 - Niklas Jansson

<b>>Har aldrig använt det men det borde vara det snabbaste man kan få. </b>
Nja... man ska ha klart för sig att de tillståndsmaskinerna man får ut inte nödvändigtvis är optimala (eftersom en sån optimering är ett np-komplett problem). Det gör att om tillståndsmaskinen blir kass så kan man i teorin tjäna på att skriva en handoptimerad version.


Svara

Sv:Snabbaste sättet att läsa in rader och söka efter strängmönster från fil.

Postades av 2008-11-10 00:02:20 - Håkan Borneland

Ja jag funderade ju i dom banorna också (regexp).
Tyvärr går det riktigt långsamt (säger inte att jag gör det på bästa sättet, please show the way..).

Martin: det jag letar efter finns i strängen (inte i början).
Det "fina" med att läsa in rad för rad är ju att man får datat paketerat precis som jag vill ha det.
Att läsa in allt i en sträng låter som extra jobb att leta upp start och slut på det jag vill ha.

Just nu är ReadAllLines() kombinerat med två Contains() villkor snabbast.

Har blivit varnad för en stor overhead i appens minnesutrymme med ReadAllLines().


Svara

Sv: Snabbaste sättet att läsa in rader och söka efter strängmönster från fil.

Postades av 2008-11-10 11:02:59 - Oskar Johansson

Mitt förslag:
1) Öppna filen, ta reda på vilken encoding som används
2) Ta dina två söksträngar, och encoda dem till bytes-arrays enligt encoding ovan
3) Sök binärt. Du sparar in hela decodingen från bytes -> sträng som du inte behöver

Den binära sökningen får du sedan göra själv med lite roliga loopar


Svara

Sv: Snabbaste sättet att läsa in rader och söka efter strängmönster från fil.

Postades av 2008-11-10 20:49:58 - Roger Alsing

http://en.wikipedia.org/wiki/Boyer-Moore_string_search_algorithm


Svara

Sv:Snabbaste sättet att läsa in rader och söka efter strängmönster från fil.

Postades av 2008-11-11 09:38:10 - Håkan Borneland

Tack för tipsen ska kika på dem vid tillfälle.


Svara

Sv: Snabbaste sättet att läsa in rader och söka efter strängmönster från fil.

Postades av 2008-11-13 09:28:12 - Niclas Pehrsson

Glöm inte Compiled flagga för regex om du återanropar ditt regex ofta.


Svara

Nyligen

  • 18:42 Hvor finder man håndlavede lamper
  • 18:41 Hvor finder man håndlavede lamper
  • 16:36 Allt du behöver veta om keramiskt
  • 16:14 Vem anlitar man egentligen när tak
  • 16:14 Vem anlitar man egentligen när tak
  • 16:13 Vem anlitar man egentligen när tak
  • 11:52 Noen erfaring med uttak hos Mostbe
  • 11:51 Noen erfaring med uttak hos Mostbe

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 570 699
27 958
271 741
733
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies