Thread: [pygccxml-commit] SF.net SVN: pygccxml: [693] pyplusplus_dev/docs/documentation/ best_practices.res
Brought to you by:
mbaas,
roman_yakovenko
[pygccxml-commit] SF.net SVN: pygccxml: [693]
pyplusplus_dev/docs/documentation/ best_practices.rest
From: <mb...@us...> - 2006-10-30 16:44:11
|
Revision: 693 http://svn.sourceforge.net/pygccxml/?rev=693&view=rev Author: mbaas Date: 2006-10-30 08:43:55 -0800 (Mon, 30 Oct 2006) Log Message: ----------- Added a section about how to keep the declaration tree small (using the -fxml-start option of gccxml). Modified Paths: -------------- pyplusplus_dev/docs/documentation/best_practices.rest Modified: pyplusplus_dev/docs/documentation/best_practices.rest =================================================================== --- pyplusplus_dev/docs/documentation/best_practices.rest 2006-10-28 12:38:46 UTC (rev 692) +++ pyplusplus_dev/docs/documentation/best_practices.rest 2006-10-30 16:43:55 UTC (rev 693) @@ -88,8 +88,37 @@ .. _`this error` : http://boost.org/libs/python/doc/v2/faq.html#c1204 .. __ : ./../../pygccxml/design.html +* Keep the declaration tree small. + When parsing the header files to build the declaration tree, there will also + be the occasional "junk" declaration inside the tree that is not relevant to + the bindings you want to generate. These extra declarations come from header + files that were included somewhere in the header files that you were actually + parsing (e.g. if that library uses the STL or OpenGL or other system headers + then the final declaration tree will contain those declarations, too). + It can happen that the majority of declarations in your declaration tree are + such "junk" declarations that are not required for generating your bindings + and that just slow down the generation process (reading the declaration cache + and doing queries will take longer). + To speed up your generation process you might want to consider making the + declaration tree as small as possible and only store those declarations that + somehow have an influence on the bindings. Ideally, this is done as early + as possible and luckily gccxml provides an option that allows you to reduce + the number of declarations that it will store in the output XML file. You can + specify one or more declarations using the ``-fxml-start`` option and only + those sub-tree starting at the specified declarations will be written. For + example, if you specify the name of a particular class, only this class + and all its members will get written. Or if your project already uses + a dedicated namespace you can simply use this namespace as a starting point + and all declarations stemming from system headers will be ignored (except + for those declarations that are actually used within your library). + + In the ``pygccxml`` package you can set the value for the ``-fxml-start`` + option using the ``start_with_declarations`` attribute of the + ``pygccxml.parser.config_t`` object that you are passing to the parser. + + .. _`Py++` : ./../pyplusplus.html .. _`pygccxml` : ./../../pygccxml/pygccxml.html .. _`Boost.Python`: http://www.boost.org/libs/python/doc/index.html This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
[pygccxml-commit] SF.net SVN: pygccxml: [903]
pyplusplus_dev/docs/documentation/ best_practices.rest
From: <rom...@us...> - 2007-02-11 21:00:33
|
Revision: 903 http://svn.sourceforge.net/pygccxml/?rev=903&view=rev Author: roman_yakovenko Date: 2007-02-11 13:00:32 -0800 (Sun, 11 Feb 2007) Log Message: ----------- adding caveats to the documentation Modified Paths: -------------- pyplusplus_dev/docs/documentation/best_practices.rest Modified: pyplusplus_dev/docs/documentation/best_practices.rest =================================================================== --- pyplusplus_dev/docs/documentation/best_practices.rest 2007-02-11 20:59:49 UTC (rev 902) +++ pyplusplus_dev/docs/documentation/best_practices.rest 2007-02-11 21:00:32 UTC (rev 903) @@ -84,7 +84,30 @@ my_big_class = mb.class_( my_big_class ) mb.split_module( ..., huge_classes=[my_big_class], ... ) + * **Caveats** + + Consider next file layout: + :: + boost/ + date_time/ + ptime.hpp + time_duration.hpp + date_time.hpp //main header, which include all other header files + + Py++ currently does not handle relative paths as input very well, so it is + recommended that you use "os.path.abspath()" to transform the header file to + be processed into an absolute path: + + .. code-block:: Python + + #Next code will expose nothing + mb = module_builder( [ 'date_time/date_time.hpp' ], ... ) + + #while this one will work as expected + import os + mb = module_builder( [ os.path.abspath('date_time/date_time.hpp') ], ... ) + .. _`this error` : http://boost.org/libs/python/doc/v2/faq.html#c1204 .. __ : ./../../pygccxml/design.html This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rom...@us...> - 2007-04-25 04:10:46
|
Revision: 1018 http://svn.sourceforge.net/pygccxml/?rev=1018&view=rev Author: roman_yakovenko Date: 2007-04-24 21:10:48 -0700 (Tue, 24 Apr 2007) Log Message: ----------- updating documentation Modified Paths: -------------- pyplusplus_dev/docs/documentation/best_practices.rest Modified: pyplusplus_dev/docs/documentation/best_practices.rest =================================================================== --- pyplusplus_dev/docs/documentation/best_practices.rest 2007-04-24 17:31:08 UTC (rev 1017) +++ pyplusplus_dev/docs/documentation/best_practices.rest 2007-04-25 04:10:48 UTC (rev 1018) @@ -141,7 +141,34 @@ option using the ``start_with_declarations`` attribute of the ``pygccxml.parser.config_t`` object that you are passing to the parser. +* Use `Py++`_ repository of generated files md5 sum. + `Py++`_ is able to store md5 sum of generated files in a file. Next time you + will generate code, `Py++`_ will compare generated file content against the sum, + instead of loading the content of the previously generated file from the disk + and comparing against it. + + .. code-block:: Python + + mb = module_builder_t( ... ) + ... + my_big_class = mb.class_( my_big_class ) + mb.split_module( ..., use_files_sum_repository=True ) + + `Py++`_ will generate file named "<your module name>.md5.sum" in the directory + it will generate all the files. + + Enabling this functionality should give you 10-15% of performance boost. + + * **Caveats** + + If you changed manually some of the files - don't forget to delete the relevant + line from "md5.sum" file. You can also delete the whole file. If the file is + missing, `Py++`_ will use old plain method of comparing content of the files. + It will not re-write "unchanged" files and you will not be forced to recompile + the whole project. + + .. _`Py++` : ./../pyplusplus.html .. _`pygccxml` : ./../../pygccxml/pygccxml.html .. _`Boost.Python`: http://www.boost.org/libs/python/doc/index.html This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |