On Tuesday 01 March 2005 15:12, Detlev Offenbach wrote:
> Am Dienstag, 1. MÃrz 2005 14:44 schrieb FlÃvio CodeÃo Coelho:
> > On Tuesday 01 March 2005 10:16, Hans-Peter Jansen wrote:
> > > Try e.g.:
> > >   int(QLineEdit.text().latin1())
> > > or:
> > >   int(str(QLineEdit.text()))
>
> How about using QLineEdit.text().toInt() ?

You probably mean QLineEdit.text().toInt()[0], but the to.. methods 
impose other problems, when it comes to crossing "int" boundary, and 
are slower, then int(str()):

python timing.py 1 12 123 1234 12345 123456 1234567 12345678 \
 123456789 1234567890 12345678901 123456789012

value: 1
intstr: 0.27
intlatin1: 0.44
toint: 0.38
tolong: 0.36
tolonglong not supported!

value: 12
intstr: 0.27
intlatin1: 0.46
toint: 0.38
tolong: 0.39
tolonglong not supported!

value: 123
intstr: 0.28
intlatin1: 0.48
toint: 0.37
tolong: 0.38
tolonglong not supported!

value: 1234
intstr: 0.28
intlatin1: 0.48
toint: 0.40
tolong: 0.41
tolonglong not supported!

value: 12345
intstr: 0.29
intlatin1: 0.48
toint: 0.39
tolong: 0.40
tolonglong not supported!

value: 123456
intstr: 0.27
intlatin1: 0.47
toint: 0.42
tolong: 0.42
tolonglong not supported!

value: 1234567
intstr: 0.29
intlatin1: 0.49
toint: 0.41
tolong: 0.42
tolonglong not supported!

value: 12345678
intstr: 0.30
intlatin1: 0.48
toint: 0.41
tolong: 0.44
tolonglong not supported!

value: 123456789
intstr: 0.36
intlatin1: 0.50
toint: 0.43
tolong: 0.43
tolonglong not supported!

value: 1234567890
intstr: 0.37
intlatin1: 0.48
toint: 0.43
tolong: 0.45
tolonglong not supported!

value: 12345678901
intstr: 3.03
intlatin1: 3.10
toint failed!: 0
tolong failed!: 0
tolonglong not supported!

value: 123456789012
intstr: 3.03
intlatin1: 3.11
toint failed!: 0
tolong failed!: 0
tolonglong not supported!

Phil, what's wrong with toLongLong()? Too much compiler trouble?

Pete
#!/usr/bin/env python

import sys, time
import qt

# Python Cookbook, P. 16
def timeo(n, fun, *args):
    def void(): pass
    start = time.clock()
    for i in range(n): void()
    stend = time.clock()
    overhead = stend - start
    start = time.clock()
    for i in range(n): fun(*args)
    stend = time.clock()
    thetime = stend - start
    return fun.__name__, thetime - overhead

def intstr(v):
    return int(str(v))

def intlatin1(v):
    return int(v.latin1())

def toint(v):
    return v.toInt()[0]

def tolong(v):
    return v.toLong()[0]

def tolonglong(v):
    return v.toLongLong()[0]

def runtest(a):
    print "value:", a
    v = qt.QString(a)
    for f in intstr, intlatin1, toint, tolong, tolonglong:
        try:
            r = f(v)
        except:
            print f.__name__, "not supported!"
            continue
        if str(r) != a:
            print f.__name__, "failed:", r
            continue
        print "%s: %.2f" % timeo(100000, f, v)
    print

if __name__ == '__main__':
    if len(sys.argv) > 1:
        for a in sys.argv[1:]:
            runtest(a)
    else:
        runtest('12345678')


_______________________________________________
PyKDE mailing list    [email protected]
http://mats.imk.fraunhofer.de/mailman/listinfo/pykde

Reply via email to