Page 1 of 11

SBASIC & C++

Posted: Mon Nov 24, 2014 2:22 pm
by stevepoole
Has anyone seen benchmarks comparing the speed of the same algorythm running in SBasic and C++.
I have an offer to transcode a SBasic program into C++, but do not wish to put the person to trouble unless C++ is definitely considerably faster than SBasic. I have read that Visual basic is almost as fast as C++. Is this also the case for SBasic?

Re: SBASIC & C++

Posted: Mon Nov 24, 2014 3:39 pm
by tofro
Steve,
as far as I know, there's no such thing as a working C++-Compiler for QDOSMSQ. So, without leaving the platform behind (shame on you, if so ;) ) there's not much point in doing comparisons.

If we're talking C, instead, depending on what the code is doing and the compiler used, you can still calculate with ~50% - 200% improvement , even on compiled S*BASIC. Screen output can't be made much faster, while internal calculations, especially in tight loops, can really be sped up considerably.

Tobias

Re: SBASIC & C++

Posted: Mon Nov 24, 2014 6:00 pm
by stevepoole
Thanks Tobias. I am not thinking about quitting QPC, just porting a Travelling Salesman program to C++, that is, if it will run faster, for non-QL users. At present, that would be useful if I can get an acceleration of around 9 times, which would make it a very fast program by any standards.
I timed bits of the code, and found that SBasic assignments are slow in proportion to even such heavy routines as divisions. The functions I need to accelerate are + - * and SQRT(). As for assignments, I suspect that they are slow because of the time needed to calculate and fetch array elements. I will try to reduce that overhead by sorting out redundant (repeated) fetching.
Perhaps C++ compilers does some clever Cacheing. Does anybody use CACHE ON or CACHE OFF in programs? If so, where is this helpful?
Steve.

Re: SBASIC & C++

Posted: Mon Nov 24, 2014 10:23 pm
by RWAP
If the program is written in SuperBASIC / SBASIC, why not simply compile it using Turbo or even SuperBASIC C-Port (have never tried the latter).

If you use Turbo, the code will probably be quicker than C code - would be interesting to know...

By the way, I don't think Visual Basic is interpreted as such - that is probably why it's as fast as C++ code...

Re: SBASIC & C++

Posted: Mon Nov 24, 2014 10:41 pm
by tofro
RWAP wrote: If you use Turbo, the code will probably be quicker than C code - would be interesting to know...
Not exactly - C (even C68, which doesn't heavily optimize) is much faster than Turbo compiled programs - Turbo uses so-called threaded code (if not told to compile into inline code which is much faster, but ridiculously large) which is, while faster, still way more slow than C code. Most people consider threaded code still as interpreted. Compared to SMSQ/E SBASIC, Turbo really struggles to gain a twofold increase in speed. C68 is rather like 10 (or more) times faster. DP's advertising claims have always been a bit, say, optimistic ;) (Says me, who really likes the Turbo compiler)
RWAP wrote: By the way, I don't think Visual Basic is interpreted as such - that is probably why it's as fast as C++ code...
If you consider that a stock PC today is about 1000 times faster than a QL, I think speed shouldn't be much of a problem if you move to another platform.

Tobias

Re: SBASIC & C++

Posted: Mon Nov 24, 2014 11:00 pm
by stevepoole
So C68 progams are some 10 times faster than uncompiled SBasic. Ok that means the Travelling Salesman Program could run as fast as the current KLT algorythm running on a Mac under C++. This bodes well for the SBasic progam, which is as yet far from fully optimised.
Is C68 a cross-compiler, or do you need to learn C, as I suspect?
For the moment I will continue optimising the code with QPC.
As for Cacheing on QPC, does anyone do this?

Re: SBASIC & C++

Posted: Tue Nov 25, 2014 8:31 pm
by stevepoole
After years of doing without, I managed to get my program TURBO'd and it does indeed run several times faster.
As for SuperBasic C-Port, where can you get this from?
Steve.

Re: SBASIC & C++

Posted: Tue Nov 25, 2014 9:29 pm
by RWAP
I probably have a copy of C-Port left in amongst my remaining DP collection disks - I think this was written by Chas Dillon - so someone could contact him about this... :D

Re: SBASIC & C++

Posted: Wed Nov 26, 2014 9:32 pm
by stevepoole
Hi Rich,
Yes I would like to aquire Superbasic C-Port and give it a try. It should make a reasonable stepping-stone for transcoding to C++.
If anyone has used it , I would like to hear their opinion on it.

This is what the SBasic 'Travelling Salesman Program' has to compete with :
Type this into your search engine : { An Effective Implementation of the Lin-Kernighan Traveling Salesman Heuristic } This is why speed matters, so that algorythm comparisons use the same languages run on the same processors.

Work on the TSP is still progressing, and I hope to have found time to release it by february.
It will be fully developped first in SMSQ/E on QPC...
Steve.

Re: SBASIC & C++

Posted: Thu Nov 27, 2014 11:23 am
by RWAP
I've had a look - if someone has the Digital Precision collection it is on disk 3.

Unfortunately, someone must have already purchased that disk off me... :o