[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Slow memory access, Not understood when using integer@(mem address)


Using the jit with integer@ makes it 1442 times faster. To not using fast. It takes 4 seconds. It is hard to believe that the checks need to be that significant  a slowdown.

On September 24, 2026 1:12:47 PM PDT, Jussi Lahtinen <jussi.lahtinen@xxxxxxxxx> wrote:
>Note that assigning address to structure is not checked at all.
>Thus example "Dim bomb As Myint = CPointer(0)" is accepted by Gambas. The
>crash happens only when accessing the address (example "Inc bomb").
>So, perhaps Integer@() could cache its checks for it to be faster... but
>this could be a lot of trouble for little benefit. Or it could be unsafe as
>default like many memory access functions.
>
>
>Jussi
>
>
>On Thu, Sep 24, 2026 at 10:10 PM Jussi Lahtinen <jussi.lahtinen@xxxxxxxxx>
>wrote:
>
>> This:  Integer@(mptr) = Integer@(mptr) + 1
>> does a lot more than this: vptr.counter = vptr.counter + 1
>>
>> They are not quite equal.
>> First one fetches Gambas integer from the memory address twice and then
>> adds one. The other one does everything completely within Gambas. IE adds
>> one to the variable in Gambas.
>>
>>
>> Jussi
>>
>>
>>
>> On Thu, Sep 24, 2026 at 12:03 AM Brian G <brian@xxxxxxxxxxxxxxxx> wrote:
>>
>>> On 9/23/26 13:36, Brian G wrote:
>>> > I have attached a small project that tests the access speed to memory
>>> > using integer@(memory address), as used for Linux library interfaces.
>>> > I am sorry but 44 times slower than access through a struct pointer is
>>> > just a bit much to accept!
>>> > Using this structure and allocating a data space
>>> > Public Struct myint
>>> >     counter As Integer
>>> > End Struct
>>> > mptr=alloc(100)
>>> > Here is an example using integer@(xx) compared to accessing thru a
>>> > structure 1 million times
>>> >
>>> > Test Speed to Access script Variables using integer@ptr access method,
>>> > no locking
>>> > using: Integer@(mptr) = Integer@(mptr) + 1
>>> > Total time 4.40942561195698
>>> >
>>> > Test Speed to Access script Variables using struct direct access
>>> > method, no locking
>>> > dim vptr as myint = mptr
>>> > using: Inc vptr.counter and tested with vptr.counter = vptr.counter +
>>> > 1, same results
>>> > Total time 0.098687710007653
>>> >
>>> > Struct access is 44.6810829482192 times faster than integer @ access
>>> > to the same memory address
>>> >
>>> > Can this be fixed, it is pretty bad!
>>> >
>>> Update
>>>
>>> using fast unsafe the values are interesting so normal is about 1442
>>> times slower than fast unsafe version
>>>
>>> Hello world
>>> Test Speed to Access script Variables using integer@ptr access method,
>>> no locking
>>> Total time 0.003050090977922
>>> Test Speed to Access script Variables using struct direct access method,
>>> no locking
>>> Total time 0.041397490072995
>>> Struct access is now 13.5725427118894 times slower..... confusing such a
>>> big difference
>>>
>>> --
>>> ~~~~ Brian
>>>
>>>

~~~Brian

Follow-Ups:
Re: Slow memory access, Not understood when using integer@(mem address)Jussi Lahtinen <jussi.lahtinen@xxxxxxxxx>