You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: doc/How-it-works.xml
+4-4Lines changed: 4 additions & 4 deletions
Original file line number
Diff line number
Diff line change
@@ -95,13 +95,13 @@ g_object_unref(region);
95
95
Like most threaded image processing systems, all VIPS operations have to be free of side-effects. In other words, operations cannot modify images, they can only create new images. This could result in a lot of copying if an operation is only making a small change to a large image so VIPS has a set of mechanisms to copy image areas by just adjusting pointers. Most of the time no actual copying is necessary and you can perform operations on large images at low cost.
VIPS uses <ulinkurl="https://gstreamer.freedesktop.org/modules/orc.html">Orc</ulink>, a run-time compiler, to generate code for some operations. For example, to compute a convolution on an 8-bit image, VIPS will examine the convolution matrix and the source image and generate a tiny program to calculate the convolution. This program is then <quote>compiled</quote> to the vector instruction set for your CPU, for example SSE3 on most x86 processors.
101
+
VIPS uses <ulinkurl="https://github.com/google/highway">Highway</ulink>, a C++ library, to optimise various operations with SIMD/vector instructions. These optimised code paths are flexible and can adapt to different instruction sets, including those with <quote>scalable</quote> vectors (size unknown at compile time). At runtime, dynamic dispatch selects the best available implementation based on the processor’s capabilities, ensuring optimal performance.
102
102
</para>
103
103
<para>
104
-
Run-time vector code generation typically speeds operations up by a factor of three or four.
104
+
SIMD typically speeds operations up by a factor of three or four.
Because VIPS operations are free of side-effects*, you can cache them. Every time you call an operation, VIPS searches the cache for a previous call to the same operation with the same arguments. If it finds a match, you get the previous result again. This can give a huge speedup.
192
192
</para>
193
193
<para>
194
-
By default, VIPS caches the last 1,000 operation calls. You can also control the cache size by memory use or by files opened.
194
+
By default, VIPS caches the last 100 operation calls. You can also control the cache size by memory use or by files opened.
195
195
</para>
196
196
<para>
197
197
(* Some vips operations DO have side effects, for example, <literal>vips_draw_circle()</literal> will draw a circle on an image. These operations emit an <quote>invalidate</quote> signal on the image they are called on and this signal makes all downstream operations and caches drop their contents.)
0 commit comments