Skip to content

Commit 8ecde0f

Browse files
committed
Update Readme
1 parent 4d90e31 commit 8ecde0f

File tree

1 file changed

+86
-44
lines changed

1 file changed

+86
-44
lines changed

README.md

+86-44
Original file line numberDiff line numberDiff line change
@@ -31,27 +31,44 @@ But the most important thing for me was to learn Rust and create a program usefu
3131
- Similar Files - Finds files which are not exactly the same
3232

3333
## Usage and requirements
34-
### Requirements
35-
For normal use of the program, the only requirement is having GTK 3.22+.
36-
For CLI, Orbtk on all OS and GTK GUI on Windows, there are no special requirements.
3734

38-
Precompiled binaries are available here - https://github.com/qarmin/czkawka/releases/
3935

40-
You can also download the application with different commits here - https://github.com/qarmin/czkawka/actions
36+
### Precompiled binaries
37+
For Linux of the program, the only requirement is having GTK 3.22+ installed on system.
4138

39+
Precompiled binaries are available here - https://github.com/qarmin/czkawka/releases/
4240
If the app does not run when clicking at a launcher, run it through a terminal.
41+
42+
### Appimage
43+
Appimage files are available in release page, same as native binaries and minimal required version of OS is Ubuntu 18.04 - https://github.com/qarmin/czkawka/releases/
44+
4345
### Cargo
44-
You can install Czkawka easily from Cargo by typing `cargo install czkawka_gui`
46+
Easier method to install Czkawka is to use Cargo command(you must have installed GTK libraries in OS)
47+
```
48+
cargo install czkawka_gui
49+
```
50+
You can update package by typing same command.
51+
52+
### Snap, Flatpak
53+
Maybe someday
54+
55+
### Debian/Ubuntu repository and PPA
56+
Tried to setup it, but for now I have problems described in this issue
4557

46-
### Snap, Flatpak, Appimage
47-
Still WIP, but looking for help
58+
https://salsa.debian.org/rust-team/debcargo-conf/-/issues/21
4859

49-
### AUR - Arch Linux Package
60+
61+
### AUR - Arch Linux Package(unofficial)
5062
Czkawka is also available in Arch Linux's AUR from which it can be easily downloaded and installed on the system.
5163
```
5264
yay -Syu czkawka-git
5365
```
5466

67+
This is unofficial package, so new versions will not be always available.
68+
69+
### Devel versions
70+
Artifacts from each commit you can also download here - https://github.com/qarmin/czkawka/actions
71+
5572
## Compilation
5673
### Requirements
5774
Rust 1.46 - probably lower also works fine(1.40 is needed by GTK)
@@ -90,52 +107,75 @@ cargo run --bin czkawka_cli
90107
![CLI](https://user-images.githubusercontent.com/41945903/93716816-0bbcfd80-fb72-11ea-8d31-4c87cc2abe6d.png)
91108

92109
## Speed
93-
Since Czkawka is written in Rust and aims to be a faster alternative to FSlint (written in Python), we need to compare the speed of these two tools.
110+
Since Czkawka is written in Rust and aims to be a faster alternative to FSlint (written in Python), we need to compare the speed of these tools.
111+
112+
I prepared a directory and performed a test without any folder exceptions(I removed all directories from FSlint and Czkawka from other tabs than Include Directory) which contained 320004 files and 36902 folders and 108844 duplicated files in 34475 groups which took 4.53 GB.
94113

95-
I prepared a directory and performed a test without any folder exceptions(I removed all directories from FSlint and Czkawka from other tabs than Include Directory) which contained 176 056 files and 22194 folders and 88436 duplicated files in 52330 groups worth 6,2 GB.
114+
Minimum file size to check I set to 1KB on all programs
96115

97116
The first run reads every file entry and saves it to cache, so this step is limited mostly by disk performance. In the second run the cache helps it, so searching is sometimes faster (with few duplicates even 10x faster).
98117

99-
Duplicate Checker(Version 0.1.4)
118+
DupeGuru after selecting files, froze at 45% for ~15 minutes, so I just kill it.
100119

101120
| App| Executing Time |
102121
|:----------:|:-------------:|
103-
| FSlint (First Run)| 284s |
104-
| FSlint (Second Run)| 247s |
105-
| Czkawka GUI Release(First Run) | 118s |
106-
| Czkawka GUI Release(Second Run) | 120s |
122+
| FSlint 2.4.7 (First Run)| 255s |
123+
| FSlint 2.4.7 (Second Run)| 126s |
124+
| Czkawka 1.2.2 (First Run) | 150s |
125+
| Czkawka 1.2.2 (Second Run) | 107s |
126+
| DupeGuru 4.0.4 (First Run) | - |
127+
| DupeGuru 4.0.4 (Second Run) | - |
128+
107129

108-
I used Mprof for FSlint and Heaptrack for Czkawka
130+
I used Mprof for checking memory usage FSlint and Dupeguru, for Czkawka I used Heaptrack.
131+
To not get Dupeguru crash I checked smaller directory with 217986 files and 41883 folders.
109132

110133
| App| Idle Ram | Max Operational Ram Usage | Stabilized after search usage |
111134
|:----------:|:-------------:|:-------------:|:-------------:|
112-
| FSlint | 55 MB | 160 MB | 150 MB |
113-
| Czkawka GTK GUI Release | 8 MB | 76 MB | 75 MB |
114-
115-
116-
Differences should be more visible when using slower CPU or faster disk.
117-
118-
## Comparsion with FSLint
119-
120-
| | Czkawka | FSlint |
121-
|:----------:|:-------------:|:-----:|
122-
| Language | Rust| Python |
123-
| Framework | GTK 3 (Gtk-rs)| GTK 2 (PyGTK) |
124-
| Ram Usage | Low | Medium |
125-
| Duplicate finder | X | X |
126-
| Empty files | X | X |
127-
| Empty folders | X | X |
128-
| Temporary files | X | X |
129-
| Big files | X | |
130-
| Similar images | X | |
131-
| Installed packages | | X |
132-
| Invalid names | | X |
133-
| Names conflict | | X |
134-
| Invalid symlinks | | X |
135-
| Bad ID | | X |
136-
| Non stripped binaries | | X |
137-
| Redundant whitespace | | X |
138-
| Project Activity | High | Very Low |
135+
| FSlint 2.4.7 | 54 MB | 120 MB | 117 MB |
136+
| Czkawka 1.2.2 | 8 MB | 42 MB | 41 MB |
137+
| DupeGuru 4.0.4 | 110 MB | 637 MB | 602 MB |
138+
139+
Similar Images which check 386 files which takes 1,9GB
140+
141+
| App| Scan time |
142+
|:----------:|:-------------:|
143+
| Czkawka 1.2.2 | 267s |
144+
| DupeGuru 4.0.4 | 75s |
145+
146+
Similar Images which check 5018 files which takes 389MB
147+
148+
| App| Scan time |
149+
|:----------:|:-------------:|
150+
| Czkawka 1.2.2 | 45s |
151+
| DupeGuru 4.0.4 | 87s |
152+
153+
So still is a big room for improvements.
154+
155+
## Comparsion other tools
156+
157+
| | Czkawka | FSlint | DupeGuru |
158+
|:----------:|:-------------:|:-----:|:---:|
159+
| Language | Rust| Python | Python/Objective C |
160+
| OS | Linux, Windows, Mac(only CLI) | Linux | Linux, Windows, Mac|
161+
| Framework | GTK 3 (Gtk-rs)| GTK 2 (PyGTK) | Qt 5 (PyQt)/Cocoa |
162+
| Ram Usage | Low | Medium | |
163+
| Duplicate finder | X | X | X |
164+
| Empty files | X | X | |
165+
| Empty folders | X | X | |
166+
| Temporary files | X | X | |
167+
| Big files | X | | |
168+
| Similar images | X | | X |
169+
| Checking files EXIF| | | X |
170+
| Installed packages | | X | |
171+
| Invalid names | | X | |
172+
| Names conflict | | X | |
173+
| Invalid symlinks | | X | |
174+
| Bad ID | | X | |
175+
| Non stripped binaries | | X | |
176+
| Redundant whitespace | | X | |
177+
| Multiple languages(po) | | X | X |
178+
| Project Activity | High | Very Low | High |
139179

140180
## Contributions
141181
Contributions to this repository are welcome.
@@ -154,6 +194,8 @@ Czkawka is a Polish word which means _hiccup_.
154194
I chose this name because I wanted to hear people speaking other languages pronounce it.
155195
This name is not as bad as it seems, because I was also thinking about using words like _żółć_, _gżegżółka_ or _żołądź_, but I gave up on these ideas because they contained Polish characters, which would cause difficulty in searching for the project.
156196

197+
At the beginning of the program creation, if the response concerning the name was unanimously negative, I prepared myself for a possible change of the name of the program, but the opinions were extremely mixed.
198+
157199
## License
158200
Code is distributed under MIT license.
159201

0 commit comments

Comments
 (0)