Slow startup with a directory containing a lot of images
Nobody has claimed this yet.
Assessment
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Newbie friendliness
- 48/100
- Issue type
- Bug
- Clarity
- Mostly clear
- Activity status
- Quiet
- Tech stack
- c
- Domain
- desktop, performance
Research direction
Reproduce the delay with a directory containing about 17k images, then review the supplied profile around xviewer_job_model_run, directory_visit, and xviewer_list_store_append_di. Compare startup behavior before and after the change, with completion shown by a substantially faster window display for this workload.
Written by the indexing model from the issue text.
Description
==version==
xviewer 3.4.16
mint: 22.3 x64
I have a directory in my home directory (on SSD) with about 17k images synced from my phone.
caja loads the directory in about 6 seconds cold, about 3 seconds hot.
Clicking on an image in caja launches xviewer which takes ~17 seconds to display a window.
Samples: 86K of event 'cycles:P', Event count (approx.): 91442541114
Children Self Command Shared Object Symbol
+ 98.19% 0.00% xviewer libc.so.6 [.] clone3
+ 98.19% 0.00% xviewer libc.so.6 [.] start_thread
+ 98.19% 0.00% xviewer libglib-2.0.so.0.8000.0 [.] 0x00007eacfa0afe62
+ 98.13% 0.00% xviewer libxviewer.so [.] xviewer_job_scheduler
+ 98.13% 0.00% xviewer libxviewer.so [.] xviewer_job_process
+ 98.13% 0.00% xviewer libxviewer.so [.] xviewer_job_run
+ 91.62% 0.00% xviewer libxviewer.so [.] xviewer_job_model_run
+ 91.61% 0.00% xviewer libxviewer.so [.] xviewer_list_store_add_files
+ 91.57% 0.00% xviewer libxviewer.so [.] xviewer_list_store_append_di
+ 90.81% 0.00% xviewer libxviewer.so [.] directory_visit
+ 90.69% 0.00% xviewer libxviewer.so [.] xviewer_list_store_append_im
+ 90.64% 0.00% xviewer libxviewer.so [.] xviewer_list_store_append_im
+ 90.49% 0.00% xviewer libgtk-3.so.0.2409.32 [.] gtk_list_store_set
+ 90.48% 0.00% xviewer libgtk-3.so.0.2409.32 [.] gtk_list_store_set_valist
+ 67.56% 0.00% xviewer libgtk-3.so.0.2409.32 [.] 0x00007eacf9a2c664
+ 27.15% 11.18% xviewer libglib-2.0.so.0.8000.0 [.] g_hash_table_insert
+ 27.12% 0.00% xviewer libgtk-3.so.0.2409.32 [.] 0x00007eacf97fe5fe
+ 21.27% 0.00% xviewer libgtk-3.so.0.2409.32 [.] 0x00007eacf9a2c686
+ 18.10% 17.71% xviewer libglib-2.0.so.0.8000.0 [.] g_sequence_iter_next
+ 12.34% 0.00% xviewer libglib-2.0.so.0.8000.0 [.] 0x00007eacfa06d5e7
+ 10.39% 10.08% xviewer libglib-2.0.so.0.8000.0 [.] g_hash_table_lookup
+ 10.31% 0.00% xviewer libgtk-3.so.0.2409.32 [.] 0x00007eacf97fe66f
+ 6.73% 5.73% xviewer libglib-2.0.so.0.8000.0 [.] g_sequence_iter_is_end
+ 6.06% 0.00% xviewer libxviewer.so [.] xviewer_job_thumbnail_run
+ 6.06% 0.00% xviewer libxviewer.so [.] xviewer_thumbnail_add_frame
+ 6.06% 0.00% xviewer libxviewer.so [.] xviewer_thumbnail_stretch_fr
+ 6.05% 0.01% xviewer libxviewer.so [.] draw_frame_row
+ 6.03% 0.01% xviewer libglib-2.0.so.0.8000.0 [.] g_log
+ 5.97% 0.04% xviewer libglib-2.0.so.0.8000.0 [.] g_logv
+ 5.82% 0.01% xviewer libglib-2.0.so.0.8000.0 [.] g_log_default_handler
+ 5.79% 0.00% xviewer libglib-2.0.so.0.8000.0 [.] g_log_structured_array
+ 5.77% 0.00% xviewer libglib-2.0.so.0.8000.0 [.] g_log_writer_default
+ 5.76% 0.01% xviewer libglib-2.0.so.0.8000.0 [.] g_log_writer_standard_stream
+ 4.80% 0.00% xviewer libglib-2.0.so.0.8000.0 [.] 0x00007eacfa09b6d4
+ 4.78% 4.78% xviewer libglib-2.0.so.0.8000.0 [.] 0x00000000000776d0
+ 3.46% 0.00% xviewer libc.so.6 [.] __fprintf_chk
+ 3.45% 0.02% xviewer libc.so.6 [.] __vfprintf_internal
+ 3.34% 0.02% xviewer libc.so.6 [.] _IO_file_xsputn@@GLIBC_2.2.5
+ 3.31% 0.01% xviewer libc.so.6 [.] _IO_file_write@@GLIBC_2.2.5
+ 3.30% 0.00% xviewer libglib-2.0.so.0.8000.0 [.] 0x00007eacfa09b6d0
+ 3.30% 0.04% xviewer libc.so.6 [.] __GI___libc_write
+ 3.27% 3.27% xviewer libglib-2.0.so.0.8000.0 [.] 0x00000000000776ba
+ 3.17% 0.02% xviewer [unknown] [k] 0xffffffffb2000130
+ 3.15% 0.00% xviewer libglib-2.0.so.0.8000.0 [.] 0x00007eacfa09b6e0
+ 3.13% 3.13% xviewer libglib-2.0.so.0.8000.0 [.] 0x00000000000776de
+ 3.01% 0.01% xviewer [unknown] [k] 0xffffffffb1e52e37
+ 2.96% 0.00% xviewer libglib-2.0.so.0.8000.0 [.] 0x00007eacfa068683
- Dominant language
- C
- Stars
- 92
- Forks
- 47
- PR merge metrics
- No merged PRs in 30d
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from linuxmint/xviewer
-
Difficulty 3/5 1-2 days Newbie friendliness 64/100
-
Difficulty 4/5 3-5 days Newbie friendliness 45/100
-
Difficulty 3/5 1-2 days Newbie friendliness 52/100
-
Difficulty 5/5 Over a week Newbie friendliness 25/100
-
Difficulty 5/5 Over a week Newbie friendliness 25/100
All issues in linuxmint/xviewer
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
-
level/task module/gcp type/bug
Difficulty 2/5 1-3 hours Newbie friendliness 85/100
-
Difficulty 1/5 Under an hour Newbie friendliness 86/100
hapostgres/pg_auto_failover#1190 ·
-
docs
Difficulty 1/5 Under an hour Newbie friendliness 85/100
-
P3 sonic-vpp
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
sonic-net/sonic-buildimage#29662 ·