Posted by Maurizio Paglia on 2025-05-23.

Starting Ansel is a rather long process.

The system works, but nothing happens… then you can see the tittlebar appear and then the whole window is drawn.

First start is very long. After the first start the time is lower but anyway rather long.

So comes my [stupid?] question: is it possible to draw something informing the user Ansel is starting? Like a splash screen or another informative message.

Thank you

Replies

Aurélien Pierre — 2025-05-23

The start is not supposed to be long. What can get long is the OpenCL benchmark (but it has its own progress window), or building the OpenCL kernels… which shouldn’t happen if they are cached and your GPU driver wasn’t updated. Perhaps start with ansel -d all and see what takes so long (note that the long-running operation will be written in terminal only when it completes, so the last command displayed for a long time will be the one before the faulty one).


Jiyone — 2025-05-23

How long is long?

What OS are you using ?


Steve — 2025-05-23

Ansel loads in less 1.5 seconds on Windows 11


Maurizio Paglia — 2025-05-24

It loads in about 1 minute.

Running on Linux OpenSUSE Thumbleweed (compiled from source).

I will follow Pierre indications and will post results


Maurizio Paglia — 2025-05-24

Well… actually Ansel start is very long ONLY on its first launch. If I close Ansel and start it again, the startup is OK.

Data coming from <ansel -d all>

1st launch

10,199928 [init sql] library: /home/mau/.config/ansel/library.db, data: /home/mau/.config/ansel/data.db
246,356198 [sql] /home/mau/Sistema/git/ansel/src/common/tags.c:583, function dt_set_darktable_tags(): exec "DELETE FROM memory.darktable_tags"

2nd launch

10,049295 [init sql] library: /home/mau/.config/ansel/library.db, data: /home/mau/.config/ansel/data.db
20,170053 [sql] /home/mau/Sistema/git/ansel/src/common/tags.c:583, function dt_set_darktable_tags(): exec "DELETE FROM memory.darktable_tags"

And again.

1st launch

 146,636524 [image_cache] has 53426 entries (50 MiB)
 2[opencl_init] opencl related configuration options:
 3[opencl_init] opencl: ON
 4[opencl_init] opencl_library: 'default path'
 5
 6@@ 953,7
 7   KERNEL SOURCE DIRECTORY:  /opt/ansel/share/ansel/kernels
 8   KERNEL BUILD DIRECTORY:   /home/mau/.cache/ansel/cached_kernels_for_NVIDIAGeForceRTX3050_57015302
 9   CL COMPILER OPTION:       -cl-fast-relaxed-math
10   KERNEL LOADING TIME:       4.0630 sec
11[opencl_init] OpenCL successfully initialized.
12[opencl_init] here are the internal numbers and names of OpenCL devices available to Ansel:
13[opencl_init]       0  'NVIDIA GeForce RTX 3050'
14
15@@ 966,1214
16[dt_opencl_update_priorities]       image   preview export    thumbs
17[dt_opencl_update_priorities]       1  1  1  1
18[opencl_synchronization_timeout] synchronization timeout set to 200
1951,184912 [imageio_load_module_format] loading `copy' from /opt/ansel/lib64/ansel/plugins/imageio/format/libcopy.so

2nd launch

 10,419813 [image_cache] has 53426 entries (50 MiB)
 2[opencl_init] opencl related configuration options:
 3[opencl_init] opencl: ON
 4[opencl_init] opencl_library: 'default path'
 5
 6@@ 953,7
 7   KERNEL SOURCE DIRECTORY:  /opt/ansel/share/ansel/kernels
 8   KERNEL BUILD DIRECTORY:   /home/mau/.cache/ansel/cached_kernels_for_NVIDIAGeForceRTX3050_57015302
 9   CL COMPILER OPTION:       -cl-fast-relaxed-math
10   KERNEL LOADING TIME:       0.0182 sec
11[opencl_init] OpenCL successfully initialized.
12[opencl_init] here are the internal numbers and names of OpenCL devices available to Ansel:
13[opencl_init]       0  'NVIDIA GeForce RTX 3050'
14
15@@ 966,1195
16[dt_opencl_update_priorities]       image   preview export    thumbs
17[dt_opencl_update_priorities]       1  1  1  1
18[opencl_synchronization_timeout] synchronization timeout set to 200
190,756859 [imageio_load_module_format] loading `copy' from /opt/ansel/lib64/ansel/plugins/imageio/format/libcopy.so

Total time 1st launch: 66.45

Total time 2nd launch: 10,28


Maurizio Paglia — 2025-05-24

I can pass you the complete logs (first and second launch). Tested also a third one that is basically the same of the second one.

So the problem seems to be only on the first time Ansel is launched after the user login.


Aurélien Pierre — 2025-05-24

That points toward an issue in the database init/loading. How large is your library.db ?


Aurélien Pierre — 2025-05-24

I have pushed a slight optimization of the database init, you can pull and retry. In preferences -> storage -> database -> check for database maintenance, ensure that maintenance (aka database optimization) is not performed at startup.


Maurizio Paglia — 2025-05-25

160 MiB


Maurizio Paglia — 2025-05-25

OK, now ansel starts in about 30/35 seconds (was 1 minute before the pull of this morning).

I confirm time consuming steps are still

10,277029 [sql] Checked database schema and migrated if needed
213,358479 [sql] Checked db_info

and

 114,148173 [image_cache] has 53426 entries (50 MiB)
 2[opencl_init] opencl related configuration options:
 3[opencl_init] opencl: ON
 4[opencl_init] opencl_library: 'default path'
 5
 6@@ 942,8
 7   DRIVER VERSION:           570.153.02
 8   DEVICE VERSION:           OpenCL 3.0 CUDA, SM_20 SUPPORT
 9   DEVICE_TYPE:              GPU
10   GLOBAL MEM SIZE:          7849 MB
11   MAX MEM ALLOC:            1962 MB
12   MAX IMAGE SIZE:           32768 x 32768
13   MAX WORK GROUP SIZE:      1024
14   MAX WORK ITEM DIMENSIONS: 3
15
16@@ 961,7
17   KERNEL SOURCE DIRECTORY:  /opt/ansel/share/ansel/kernels
18   KERNEL BUILD DIRECTORY:   /home/mau/.cache/ansel/cached_kernels_for_NVIDIAGeForceRTX3050_57015302
19   CL COMPILER OPTION:       -cl-fast-relaxed-math
20   KERNEL LOADING TIME:       4.6061 sec
21[opencl_init] OpenCL successfully initialized.
22[opencl_init] here are the internal numbers and names of OpenCL devices available to Ansel:
23[opencl_init]       0  'NVIDIA GeForce RTX 3050'
24
25@@ 974,1409
26[dt_opencl_update_priorities]       image   preview export    thumbs
27[dt_opencl_update_priorities]       1  1  1  1
28[opencl_synchronization_timeout] synchronization timeout set to 200
2919,245620 [imageio_load_module_format] loading `copy' from /opt/ansel/lib64/ansel/plugins/imageio/format/libcopy.so

Maybe a shell script for db optimization could be auto-started after the login in my Linux box?

I am asking since startups after the first take about 10 seconds.

Thank you agai


Aurélien Pierre — 2025-05-25

Optimization is done on user request, automatically from the preferences (at startup, closing, both or never), or manually when using the global menu Run. No need for an additional script here. What I did in my recent commit is prevent it from (always) running at startup (which was a bug, judging by what the comment said).

But there is not much more I can do here. On my computer too, the most consuming step of the DB init is the same as yours (checking db_info), but it takes 0.4 s with a 470 MiB library. That step is mandatory, there is nothing more I can strip from there without risking inconsistent data savings.


Maurizio Paglia — 2025-05-25

Thank you indeed for your kind support