Performance Probleme in C Programm

ilb

Well-Known Member
Moin,
habe hier ein kleines/großes Problem.
Habe http://www.inmon.com/technology/sflowTools.php
umgeschrieben:
Die Funktionsweise bleibt im Prinzip, nur mit dem Extra, dass alles auch geloggt wird. im Prinzip ist das nur ein kleiner Vorgang der extra hinzukommt. Allerdings verbraucht das Standart Programm ganz wenig CPU. Das von mir geaenderte verbraucht 100%
cpu ist Intel(R) Pentium(R) Dual CPU E2140 @ 1.60GHz

hier wird die funktion sflowlog aufgerufen
header:
http://217.20.122.44:66/log.h
c datei:
http://217.20.122.44:66/log.c
falls jmd die komplette Datei will:/GLdWkh96.html[/url]

ich glaub fast, dass das die arrays sind die die performance so belasten. kann das sein? wenn ja was waere da ne bessere loesung?

ich weiss hier echt net weiter. bin jetz auch net der profi, aber hier sind glaube n paar die net schlecht sind :)

weare ueber jede hilfe dankbar
 
Last edited:
Meiner Erfahrung nach ist es zielführender ein Tool wie gprof(1) zu Rate zu ziehen, als anhand des Codes zu orakeln, wo der Flaschenhals liegen könnte.
 
Was hast Du denn geaendert? ;)

Und wenn Du die Schleife hinzugefuegt hast, solltest Du mal gucken, wieviele Eintraege in dem Array sind. Unter Umstaenden kostet das Oeffnen und Schliessen der Datei auch noch Zeit.

HTH
 
ach das war jetz doof von mir. den code hab ich komplett selbst geschrieben.
habe in der sflow.c datei was geaendert. und zwar wird da die funktion aus log.c aufgerufen. init_log wird nur am anfang aufgerufen.

http://rafb.net/p/a1BRat90.html
hier die zeile 2847 hab ich eingefuegt. und noch n paar kleinigkeiten, aber das sind alles nur optionen

ich probier mal das von dir genannte tool aus yetano :) kannte ich noch nicht

eintraege sind momentan immer so ~3000 in dem array. aber eigentlich sollten es mehr sein. liegt wohl daran dass das program net schnell genug laeuft
 
Hm, also wenn man Du beim Loggen ueber ein Array mit 3000 Eintraegen laeuft's, ist ja klar, dass es etwas Zeit kostet.

Und wenn ich den richtigen Code gesehen habe, dann hast Du zwei Schleifen geschachtelt, sprich die Laufzeit wird sich nochmal weiter erhoehen.

Naja, da ich nicht wirklich sehe, wo das Problem liegt, viel Erfolg beim Suchen. :)
 
also,
hab das programm jetz ma mit gprof unter die lupe genommen
hier die ausgabe:
http://217.20.122.44:66/PROFILE

nja... also das problem scheint nicht das array zu sein. weil zb in der funktion loggedAlready wird das array bis zum letzten eintrag durchgelaufen. und wie man sehen kann verbraucht die von gprof aus gesehen 0% der zeit *g
also nit viel. is da n denkfehler meinerseits oder stimmt das? is echt kacke^^

ich hab hier mal den teil der funktion rauskopiert der relevant ist. der rest wird nur alle 300 sekunden ausgefuehrt.
http://rafb.net/p/VlhC0k57.html
funktionen die hier aufgerufen werden sind ja oben in der log.c zu sehen
ich raff net was hier so lange braucht
 
Last edited:
soo
hab das problem jetzt geloest. war selbst ueberrascht das das son krassen unterschied macht:
hab die ips nich mehr als char arrays gespeicherst, sondern in variablen des typs long.
schon krass wasn unterschied dsa macht wenn man mit zahlen anstatt strings arbeitet :o
 
Back
Top