birchy a écrit : > I'm quite confused. I'm from a VB6 background, so when i moved to Ubuntu as > my main O.S. Gambas was very attractive. Several things (mainly poor > documentation) pushed me to try other languages. Having done a little C, > C++, Java and PHP, i decided to give Python a go as it's getting very > popular. I ported a function that i have used for many years in VB6 into > Gambas and (today) have ported it to Python. Results are quite shocking to > be honest. The following code takes 4.2sec to run on my oldish AMD 3000 pc. > The Python version takes 1.9sec. Pythn is "only" a scripting language, so > what gives?? > > PUBLIC SUB Main() > DIM i AS Integer, t AS Float, s AS String > > t = Timer > FOR i = 0 TO 999999 > s = GetSubstring("QWERTYUIOP", "WE", "IO") > NEXT > PRINT Timer - t > END > > PRIVATE FUNCTION GetSubstring(doc AS String, startstring AS String, > endstring AS String) AS String > RETURN Split(Split(doc, startstring)[2], endstring)[0] > END > > I was curious about the test, so I ran it on my PC and got 4.66 sec I also tried some modifications like the one below ( 2.49 sec) using the String classe, wich is the correct way to process strings in Gambas But if I remove all the "String." prefixes and the test instructions, I get 1.27 sec! Spliting is easy, but it has a cost...and if you replace the "ER" string by "AB" your prog abort with an "out of bound" message ;-)
PRIVATE FUNCTION GetSubstring(doc AS String, startstring AS String, endstring AS String) AS String DIM i, j AS Integer i = String.InStr(doc, startstring) + String.Len(startstring) IF i = 0 THEN RETURN "" ' or i = 1 it's a choice j = InStr(doc, endstring, i) IF j = 0 THEN RETURN "" ' or j = len(doc) RETURN String.Mid(doc, i, j - i) END PUBLIC SUB Button1_Click() DIM i AS Integer, t AS Float, s, m, n, p AS String m = "QWERTYUIOP" n = "WE" p = "IO" t = Timer FOR i = 0 TO 999999 s = GetSubstring(m, n, p) NEXT Label1.Caption = CString(Timer - t) END regards, Dominique Simonart ------------------------------------------------------------------------------ This SF.net email is sponsored by: SourcForge Community SourceForge wants to tell your story. http://p.sf.net/sfu/sf-spreadtheword _______________________________________________ Gambas-user mailing list Gambas-user@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/gambas-user