On 3/20/2016 9:15 PM, BartC wrote:
http://pastebin.com/dtM8WnFZ
This is a test of a character-at-a-time task in Python;

I disagree. It tests of C code re-written in ludicrously crippled Python. No use of the re module, designed for tasks like this, and no use of dicts, which replace many uses of switch statements.

> but exactly such tasks are what I often use dynamic languages for.

For instance, there are about 15 clauses like
---
elif c=="?":
lxsymbol=question_sym
return
---

I believe it would be much faster to combine these in one clause. First define simple_symbols = {'?': question_sym, ...}. Then
elif c in simple_symbols:
lxsymbol = simple_symbols[c]
return

In any case, the O(k), where k is the number of alternatives, linear search should be replaced by an O(log k) binary search (nested if-else statement) or O(1) hashed search (with a dictionary mapping chars to functions.

I started off trying to write it in a more efficient way that would suit
Python better, but quickly tired of that. I should be able to express
the code how I want.

Of course you can. But you cannot write in a crippled Python subset and fairly claim that the result represents idiomatic Python code.

--
Terry Jan Reedy

--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to