[Gambas-user] VB6 to Gambas Global arrays
Benoit Minisini
gambas at ...1...
Mon Jul 17 10:50:25 CEST 2006
On Monday 17 July 2006 10:28, Ron Onstenk wrote:
Just to clarify and fix a few points :-)
> On Monday 17 July 2006 04:24, R A Turney wrote:
> > I have noticed that the Gambas program is very slow in its computation
> > compared to VB6.
Gambas is slow in pure computation. But it depends on the way the program is
written.
Someone should really do benchmarks!
>
> If you are using the old machine not usable for winXP /Vista by lack
> of speed and memory but still usable with linux then you are right.
> But what do you exactly mean with computation?
>
> The CPU executing the bytes in the result file (*.exe) or the calculation
> of sqr(2).
>
> For the first you are almost right, the CPU must interprete the bytes
> from the gambas interpreter (gbi) and that one the bytes from the
> 'compiled' gambas file (myprogram.gambas).
The interpreter is named 'gbx' or 'gbx2'. There is no difference between a
'compiled' gambas project and a not 'compiled' one, except that the compiled
version is just an archive of all project files except the source code.
>
> For the second I'm not 100% sure but in general I can say safe there is
> no big difference.
>
> > I am hoping that this is because it is interpreted instead of compiled.
>
> Hummm.
> Gambas is also compiled. (so the hope is false)
> For a *.exe the CPU must also interprete the bytes in memory.
> Oeps. that declares why any program is always so slow :)
>
> Compile does only mean 'convert from human readable text a bunch of bytes'
> The bytes can be bytes that the CPU interprete or bytes that a
> virtual CPU interprete and that is for gambas code called gbi or gbi2.
> The later also known as bytecode or p-code.
See above.
>
> Beside of that VB6 is also not 100% CPU executable code (bytes) in the
> result file. It uses a mix of bytecode and real CPU bytes and a small
> interpreter in the resulting program.
> You have to set a option in the configuration of VB6 to effective change
> bytecode to CPU code.
>
> i.e.
> using a array of bytes to prepare a call to a dll
> DD FA (use Function Add(val1,val2) as integer)
> D2 04 (first value 1234)
> 2E 16 (second value 5678)
>
> or the code for the dll call with the initialise for that call
> 21 04D2 (mov ax 1234)
> E5 (push ax)
> 21 162E (mov ax 5678)
> E5 (push ax)
> CD 12BEFA34 (call 12BEFA34 ;the ADD routine address)
>
>
> It needs msvb6vm.dll for the major components as gambas uses several
> libraries. The main library are lib.gb.so and lib.gb.qt.so or lib.gb.gtk.so
> for gambas
lib.gb.so is not used, it is just a transient library needed for generating
the gb.info and gb.class files. It should not be present in binary packages,
and not installed.
>
> > I don't think I can make an executable in this version. Is this correct?
>
> If you mean a 100% direct by the CPU executable/interprete byte array you
> are correct. But a bash script or in msdos a *.bat file are that no
> executables? They are totally _not compiled_ at all and still do the job
> you want.
>
>
>
> Greets,
> Ron
>
Regards,
--
Benoit Minisini
More information about the User
mailing list