[liblouis-liblouisxml] Re: Performance Question

  • From: Michael Whapples <mwhapples@xxxxxxx>
  • To: liblouis-liblouisxml@xxxxxxxxxxxxx
  • Date: Sat, 26 Oct 2013 18:11:39 +0100

On the topic of Cython, the code you write in Cython compiles into a C extension module for Python. What exactly does that mean? Once the C or C++ code is obtained from compiling your Cython code, you can compile and run the module without having Cython being installed, however the module will almost always be dependent on Python as that is what Cython creates, an extension module for Python which are linked against the Python library.


My only question on Cython portability is whether the C or C++ code Cython produces depends on libraries or functions which may be unavailable on resource constrained environments.

Cython was what I wrote the liblouisxml python bindings in, so I have some experience with it.

I know little about Lua, but reading the about page indicates that the portability is little concern (it has a long list of OSs supported, including embedded and mobile platforms), see http://www.lua.org/about.html.

Michael Whapples
On 26/10/2013 17:46, John Gardner wrote:
Hello all, thanks for the great feedback.  Let me repeat and emphasize some
points from my original proposal.  One is that we use a well-known
well-supported scripting language so that we can be reasonably confident
that we won't have to use our time debugging our engine.  I absolutely
disagree with John Boyer about writing our own scripting language.  That is
a step backward.  We must make our fundamental scripts accessible to mere
mortals if we really want liblouis braille translation to be excellent for
all languages and to stay that way.  I am a physicist and am convinced that
simple is always better.

I am concerned that we are setting up "performance" as too much of a holy
grail.  We need performance on a human time scale, and humans are not
getting faster.  Computers are.  So even if the new system was somewhat
slower than the current liblouis, it wouldn't be slower in a couple of
years.  Instead of rejecting suggestions because we fear that performance
will be too bad, we should set up a benchmark and insist that the new system
meet that benchmark.  I would suggest a benchmark based on the present speed
times some factor.  My question of you is whether a factor of ten slower
would adversely affect any present application?  A factor of 2?  Mesar
reports a speed of roughly 20 microseconds per word now.  His test was 5
seconds on 241k words.  That's about a 250 page  book.  Would you object to
taking 50 seconds to translate that book if you had confidence that the
translation was really right?  And in five years the time would probably
shrink to 5 seconds again.  Jamie, is 200 microseconds per word gonna slow
down NVDA?

Of the comments made so far, I am most concerned by Jamie's comment about
conflicting Python run-time engines.  It seems clear to me now that if we do
use Python, it would need to be compiled before final use, although the
run-time environment would be used for de-bugging.  I do not know Cython, so
maybe my understanding is just wrong that it will compile into a C module
that can then be run independently of Cython.  Are there Cython experts
available for advice.

I do understand that algorithm design is important.  In my simple mind, this
is just a different way to saying that we need to build fast compiled
subroutines to do the common tasks of translation.  However, if we adopt
Susan's long-time suggestion of translating most words from big look-up
tables, the time spent on other translations would probably not be
important.  I claim that performance is less critical for formatting (ie
liblouisutdml). Am I wrong?

Finally I do strongly agree that we need to consider other scripting
languages.  What are the advantage of Lua?  Are there other candidates?  My
personal acceptahnce critieria would be that the final format work on all
OS, be well-established and likely to have legs into the future and that it
be as humanly readable as possible.

Thank you all.  This is a fruitful discussion, and I hope we keep it that
way.

John G

-----Original Message-----
From: liblouis-liblouisxml-bounce@xxxxxxxxxxxxx
[mailto:liblouis-liblouisxml-bounce@xxxxxxxxxxxxx] On Behalf Of Mesar Hameed
Sent: Friday, October 25, 2013 11:27 PM
To: liblouis-liblouisxml@xxxxxxxxxxxxx
Subject: [liblouis-liblouisxml] Re: Performance Question

Hi Ken,
I don't have the performance issues that you describe, but maybe thats
because your test is written in bash.
My python scripts that I refered to earlier, take 5 seconds to process a
wordlist of 241 thousand, which seems more realistic.
The reason for the slowdown in your script is because you are using a
separate process call for each word being translated.

Hope that helps.
Mesar


On Sat 26/10/13,00:13, Ken Perry wrote:
Here is what I mean by performance issue.  The current liblouis takes 15
minutes to convert a 99,107 word file.  That is too long.  If this parser
was generated by the same tools I have used in the past to write a compiler
that spits out some pretty nasty c++ using grammers and lex files that file
could be done in seconds  or at most a minute or two not 15 minutes.  Add
the definite slow down when you use scripting languages even those which are
jit compiled you will start seeing much worse than 15 minutes.
Ken

-----Original Message-----
From: liblouis-liblouisxml-bounce@xxxxxxxxxxxxx
[mailto:liblouis-liblouisxml-bounce@xxxxxxxxxxxxx] On Behalf Of Susan
Jolly
Sent: Friday, October 25, 2013 6:04 PM
To: liblouis-liblouisxml@xxxxxxxxxxxxx
Subject: [liblouis-liblouisxml] Performance Question

Hi everyone,

I've been lurking on this list for a long time but have now joined because
I believe that what I've learned from my practical experience in developing
braille software over the last dozen years could be helpful as far as making
plans for the future.
However I will need some background.  My first question is why you have a
concern about performance issues. I've always written my braille software
entirely in Java and even on my prevous PC running Windows XP I could
translate entire books of fiction to English contracted braille in only a
few seconds.
Susan Jolly

For a description of the software, to download it and links to project
pages go to http://www.abilitiessoft.com For a description of the
software, to download it and links to project pages go to
http://www.abilitiessoft.com
For a description of the software, to download it and links to
project pages go to http://www.abilitiessoft.com

For a description of the software, to download it and links to
project pages go to http://www.abilitiessoft.com

Other related posts: