> > Im willing to do that.
> > Do you have any pointers on how to go about debugging - or should I just
> > svn the source and read the readme's?

We are using CVS, not SVN :)

Quite good profiling tool is callgrind (part of valgrind) to collect data 
and kcachegrind to examine them in some sort of GUI,

> There should be design documentation in the source tarbal in docbook
> format. Generated html format is located at
> http://pdfedit.petricek.net/pdfedit.design_doc.
> 
> We know about performance issues but don't figure out the problem. There
> can be problem with:
>       - not proper (or effective) maintenance of objects or pdf
>         operators
>       - QSA memory management and object allocating and freeing

Solution of this problem is simple - upgrade to Qt4.3, which includes 
QtScript, which in turn have proper API for memory management. After that 
it is simple, just change all return values from QObject* to QScriptValue, 
modify lines with return statements, do some more minor changes and you're 
done :).
Also, it is faster than QSA.
However, there are some problems:
* Qt 4.3 is beta. Almost no major distro have it as package, so in most 
cases you'll have to compile qt4.3 from source. There should be stable 
version of qt4.3 around july 2007, this time I expect it will start 
getting into distros.
* Porting from qt3 to qt4 is not trivial, as many things have changed. I 
have ported already most of the code, but some still remain (there are 
some hard parts to port without breaking backwards compatibility or 
cluttering the source with insane amount of #ifdef/#endif's, to which I 
have still to figure out some elegant way to port them :). Once qt4.3 will 
reach in most stable distros (which may be somewhere around 2008), we can 
throw away qt3 compatibility, but probably not sooner. Or I can make step 
thru qt 4.1/4.2 with a bit newer QSA 1.2.x (however, that QSA still suffer 
from same problems) and throw away qt3 compatibility.
I plan to finish this in relatively near future (its on top of my pdfedit 
todo list)

Another possible solution may be to isolate some commonly used functions 
in scripting and rewrite them as helper function in C++ (they should be 
then "converted" to a slot function, a method in class Base (base.cc, 
base.h)). I have done that with some matrix transformation functions 
recently. This will help even if the QSA will be replaced with QtScript, 
as C++ implementation will be always faster (if done right) than scripted 
one.

>       - many thinks are synchronized by observers (asynchronously),
>         maybe there are some observers still registered on dead object
>         still doing some mess.

This may be worth looking into...

> In fact, there can be more places which produce these problems. We want
> to dedicate more time after finishing university (what should be in a
> short time).

Lack of time due to finishing university is currently the major cause 
while many bugs still remain ...

Martin Petricek   GPG/PGP Public key:  http://www.petricek.net/petricm.pgp
Fingerprint 6AA8 FFCE C061 1CB2 55F0  A1F3 3AA9 EB4F BD50 C1B8
/------------------------------------------------------------\
| WWW:                    http://www.petricek.net/           |
\------------------------------------------------------------/


-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
Pdfedit-support mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/pdfedit-support

Reply via email to