home bbs files messages ]

Forums before death by AOL, social media and spammers... "We can't have nice things"

   comp.lang.pascal.borland      Borland Pascal was actually pretty neat      2,978 messages   

[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]

   Message 2,924 of 2,978   
   rugxulo@gmail.com to Jim Leonard   
   Re: Virtual Pascal: BlockRead open files   
   06 May 17 20:20:48   
   
   Hi,   
      
   On Monday, May 1, 2017 at 10:55:02 PM UTC-5, Jim Leonard wrote:   
   > On Monday, April 10, 2017 at 8:36:08 AM UTC-5, Robert Prins wrote:   
   > >   
   > > All part of a process to convert a Pascal program into pure assembler,   
   which has   
   > > now reached the stage where all code is actually in-line assembler, making   
   the   
   > > program rather a lot smaller, and about three times as fast. ;)   
   >   
   > This feels an awful lot like a question you could answer yourself.  In fact,   
   I'll bet you already have...   
      
      
   Not feeling very helpful today, are we, Jim?   ;-)   
      
      
   Robert, I've not looked at your code. In fact, I somewhat doubt I   
   could help. (I don't really understand FPU/SSE.) But since you claim   
   you have a pure Pascal version, I would indeed be curious to run it   
   (preferably in pure DOS). Then again, I think you said it runs in   
   less than a second, which is hardly a worthwhile benchmark.   
      
   Just to explain, I've recently tested some compilers (GPC, FPC, TP55,   
   VP21) and various high-level tricks to optimize their output. Nothing   
   fancy, just mild curiosity.   
      
   For GPC, the obvious answer is attribute(inline) or let it do it   
   automatically with either -finline-functions or -O3.   
      
   FPC needs "inline" function directive (and -Si). I've seen you   
   complain about FPC before, but it matches (GCC 3.4.6 / 2005) GPC   
   in output speed nowadays. Seriously, I would reconsider and try   
   FPC again. It's very good.   
      
   TP55 (and similar) are too old but still work fine. There are   
   various speedups available there, but of course there are better   
   compilers nowadays, too.   
      
   I think you said Virtual Pascal is slow and generates lousy code.   
   Not quite true. Sure, it doesn't go past 586, but it's not really   
   slow. It also has the (Delphi-ish) inline function directive   
   (same as FPC) but in much more limited functionality, so it's not   
   nearly as useful. Still, it can help a lot.   
      
   The other problem I noticed is that VP does indeed claim to   
   use (186+) ENTER/LEAVE for nested procs. The docs said that   
   was for 586, but AFAIK that is for all targets (386, 486, 586).   
   The docs say it was faster on an actual 586. But I've seen this   
   problem before. On my Core i5 (admittedly somewhat old, Nehalem   
   Westmere), that kind of code, when heavily used, is actually   
   four times slower than the older 8086 equivalent. So try   
   "flattening" your source to avoid nested procedures (move   
   them to global scope) and re-benchmark it. It really helps!   
      
   --- SoupGate-Win32 v1.05   
    * Origin: you cannot sedate... all the things you hate (1:229/2)   

[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]


(c) 1994,  bbs@darkrealms.ca