[Gambas-bugtracker] Bug #1701: Very Slow 33times pointers l = long@(xxxpointer) notation compared to memcpy(varptr(l), MyPointer, sizeof(gb.long))
bugtracker at gambaswiki.org
bugtracker at gambaswiki.org
Sun Dec 22 20:54:42 CET 2019
http://gambaswiki.org/bugtracker/edit?object=BUG.1701&from=L21haW4-
Brian G reported a new bug.
Summary
-------
Very Slow 33times pointers l = long@(xxxpointer) notation compared to memcpy(varptr(l),MyPointer,sizeof(gb.long))
Type : Bug
Priority : Medium
Gambas version : 3.14
Product : Language
Description
-----------
It seems that pointers to values in memory are very slow , can this be fixed, I know it has to be slower but, any way to speed this up?
I am doing a lot of manipulation of shared memory in my app, so have had to resort to memcpy and memcmp.
The following program as example:
Extern memset(location As Pointer, value As Integer, Len As Integer) As Integer In "libc:6"
Extern memcpy(dest As Pointer, src As Pointer, Len As Integer) As Integer In "libc:6"
Public Sub Main()
Dim MyPointer As Pointer = Alloc(10000)
Dim MyLong As Long
Dim MyLong2 As Long = 0
Dim starttime As Float
Dim end1, end2 As Float
Print "Testing speed of indirect reference using mylong = long@(mypointer) pointer Refrence 1,000,000 times"
memset(MyPointer, 0, 32)
starttime = Timer
For i As Integer = 1 To 1000000
MyLong = Long@(MyPointer)
Next
end2 = Timer - starttime
Print "Time required to fetch long@ ", end2
Print "Testing speed of indirect reference using mylong = memcpy pointer Refrence 1,000,000"
starttime = Timer
For i As Integer = 1 To 1000000
memcpy(VarPtr(MyLong2), MyPointer, SizeOf(gb.long))
Next
end1 = Timer - starttime
Print "Time required to copy long ", end1
Print "Factor in speed diff =", end2 / end1
Free(MyPointer)
End
output follow:
Testing speed of indirect refrence using mylong = long@(mypointer) pointer Refrence 1,000,000 times
Time required to fetch long@ 8.61431147900294
Testing speed of indirect refrence using mylong = memcpy pointer Refrence 1,000,000
Time required to copy long 0.255567631014856
Factor in speed diff = 33.7065826560102
System information
------------------
[System]
Gambas=3.14.90
OperatingSystem=Linux
Kernel=5.3.0-24-generic
Architecture=x86_64
Distribution=Linux Mint 19.2 Tina
Desktop=MATE
Theme=Qt5CTProxy
Language=en_US.UTF-8
Memory=7340M
[Libraries]
Cairo=libcairo.so.2.11510.0
Curl=libcurl.so.4.5.0
DBus=libdbus-1.so.3.19.4
GStreamer=libgstreamer-1.0.so.0.1405.0
GTK+2=libgtk-x11-2.0.so.0.2400.32
GTK+3=libgtk-3.so.0.2200.30
OpenGL=libGL.so.1.0.0
Poppler=libpoppler.so.73.0.0
QT4=libQtCore.so.4.8.7
QT5=libQt5Core.so.5.9.5
SDL=libSDL-1.2.so.0.11.4
SQLite=libsqlite3.so.0.8.6
[Environment]
CLUTTER_BACKEND=x11
COMPIZ_CONFIG_PROFILE=mate
DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus
DEFAULTS_PATH=/usr/share/gconf/mate.default.path
DESKTOP_SESSION=mate
DISPLAY=:0
GB_GUI=gb.qt5
GDMSESSION=mate
GDM_LANG=en_US
GIO_LAUNCHED_DESKTOP_FILE=<home>/Desktop/gambas3.desktop
GIO_LAUNCHED_DESKTOP_FILE_PID=20831
GPG_AGENT_INFO=/run/user/1000/gnupg/S.gpg-agent:0:1
GTK_MODULES=gail:atk-bridge
GTK_OVERLAY_SCROLLING=0
HOME=<home>
INSIDE_CAJA_PYTHON=
LANG=en_US.UTF-8
LANGUAGE=en_US.UTF-8
LOGNAME=<user>
MANDATORY_PATH=/usr/share/gconf/mate.mandatory.path
MATE_DESKTOP_SESSION_ID=this-is-deprecated
PATH=<home>/.local/bin:<home>/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
PWD=<home>
QT_ACCESSIBILITY=1
QT_AUTO_SCREEN_SCALE_FACTOR=0
QT_LOGGING_RULES=*.debug=false
QT_QPA_PLATFORMTHEME=qt5ct
QT_SCALE_FACTOR=1
SESSION_MANAGER=local/<hostname>:@/tmp/.ICE-unix/1474,unix/<hostname>:/tmp/.ICE-unix/1474
SHELL=/bin/bash
SHLVL=0
SSH_AGENT_PID=1811
SSH_AUTH_SOCK=/run/user/1000/keyring/ssh
TZ=:/etc/localtime
USER=<user>
XAUTHORITY=<home>/.Xauthority
XDG_CONFIG_DIRS=/etc/xdg/xdg-mate:/etc/xdg
XDG_CURRENT_DESKTOP=MATE
XDG_DATA_DIRS=/usr/share/mate:<home>/.local/share/flatpak/exports/share:/var/lib/flatpak/exports/share:/usr/local/share:/usr/share
XDG_GREETER_DATA_DIR=/var/lib/lightdm-data/<user>
XDG_RUNTIME_DIR=/run/user/1000
XDG_SEAT=seat0
XDG_SEAT_PATH=/org/freedesktop/DisplayManager/Seat0
XDG_SESSION_DESKTOP=mate
XDG_SESSION_ID=c2
XDG_SESSION_PATH=/org/freedesktop/DisplayManager/Session0
XDG_SESSION_TYPE=x11
XDG_VTNR=7
More information about the Bugtracker
mailing list