Python:
time python -c 'for i in xrange(int(1e8)): t=12341234234.234 / 2.0'
real 0m26.676s
user 0m25.154s
sys 0m0.076s
time python -c 'for i in xrange(int(1e8)): t=12341234234.234 * 0.5'
real 0m17.932s
user 0m16.481s
sys 0m0.048s
умножение на 33% быстрее
Lua:
time lua -e 'for i=1,1e8 do t=12341234234.234 / 2.0 end'
real 0m7.956s
user 0m7.332s
sys 0m0.032s
time lua -e 'for i=1,1e8 do t=12341234234.234 * 0.5 end'
real 0m7.997s
user 0m7.516s
sys 0m0.036s
=> никакая реальная разница
LuaJIT:
time luajit -O -e 'for i=1,1e8 do t=12341234234.234 / 2.0 end'
real 0m1.921s
user 0m1.668s
sys 0m0.004s
time luajit -O -e 'for i=1,1e8 do t=12341234234.234 * 0.5 end'
real 0m1.843s
user 0m1.676s
sys 0m0.000s
=> это только на 5% быстрее
заключения: в Python это быстрее для умножения, чем разделиться, но поскольку Вы становитесь ближе к ЦП с помощью более усовершенствованного VMs или МОНЕТ В ПЯТЬ ЦЕНТОВ, преимущество исчезает. Довольно возможно, что будущий Python VM сделал бы его не важным
Большинство реализаций регулярных выражений поддерживают именованные классы символов:
^[[:alnum:]]+( [[:alnum:]]+)*$
Вы могли бы проявить смекалку, хотя и немного менее ясно, и упростить это до:
^([[:alnum:]]+ ?)*$
К вашему сведению, второй допускает ложный пробел в конец строки. Если вы не хотите, чтобы это было с первым регулярным выражением.
Также, как говорили другие плакаты, если [[: alnum:]]
не работает для вас, вы можете использовать [ A-Za-z0-9]
вместо этого.
(?:[a-zA-Z0-9]+[ ])+[a-zA-Z0-9]+
Если я правильно вас понял, указанное выше регулярное выражение должно работать. См. Снимок экрана ниже:
снимок экрана http://img136.imageshack.us/img136/6871/screenshotkiki056.png