2009/9/24 Jonas Maebe <jonas.ma...@elis.ugent.be>: > > On 24 Sep 2009, at 10:31, 章宏九 wrote: > >> I just tried to unfairly compare fpc-compiled binary and gcc-compiled >> binary under my Gentoo box. FPC is incredible. `ps` data shows the fpc >> one costs nearly no memory? > > The FPC run time library is much less extensive than the GNU C library > (e.g., it does not include all of the locale information that the C library > has). In case you are linking statically, then you should also note that the > GNU C library is absolutely not optimized in any way to produce small > binaries when linking statically (while the FPC run time library /is/ > optimized for that purpose). A comparison with something like uClibc would > probably give somewhat more comparable results. > > I'm also not sure how you are measuring "memory usage". If you are looking > at the VSIZE, note that this does not mean anything (since not all that > memory is actually used; RSS is better). >
Not VSIZE. RSS. I know these are not accurate data. And I said this is unfair, rather unfair. I read shootout.alioth.debian.org. Their result might be more accurate, which proves that fpc does. I know all these test cannot tell everything. But qualitative result are approximately the same and, IMHO, can be refered. >> But I still notice it is a little slow. It >> usually costs 0.5~1.0 time more than the gcc one. It seems as if fpc >> saves memory in the cost of performance loss. Is it true? > > No. FPC simply has a lot less optimization passes than gcc. Depending on the > compiled program and the host processor, this may matter a lot or very > little. > >> If so, is >> there any options for better performance and no such insane memory >> saving? > > The memory usage is completely unrelated to the code speed. > >> Another question. I cannot find any declaration of the system >> procedures such as WriteLn and ReadLn. I tried to find in fpcsrc >> directory with grep but achieve nothing. FreePascal's documents says >> the declarations are in rtl but the line number is 0. Are these system >> procedures implemented in the compiler(built-in) or in the system >> unit? > > read(ln)/write(ln) is handled internally in the compiler, and translated > into calls to different helpers in the RTL based on the actually used types. > You can find these helpers in rtl/inc/text.inc (search for fpc_read and > fpc_write). You can also compile with -al and look at the resulting .s files > to see how the compiler translates the Pascal statements into assembler code > (and which helpers it calls). > >> I would like also to know the situation in C. (I mean >> declaration of printf and scanf. Are they implemented in glibc or >> gcc?) > > > In glibc. Unlike pascal? > > > Jonas_______________________________________________ > fpc-pascal maillist - fpc-pas...@lists.freepascal.org > http://lists.freepascal.org/mailman/listinfo/fpc-pascal > (Your swift response surprised me...) _______________________________________________ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-pascal