Threshing EPS Files

Total Page:16

File Type:pdf, Size:1020Kb

Threshing EPS Files Threshing EPS files Bogus law Jackowski, Piotr Pianowski, and Piotr Strzelczyk BOP s.c. ul. Piastowska 70, Gda´nsk, Poland [email protected]\\ [email protected]\\ [email protected] Abstract In this article we describe the CEP package for compressing EPS files. It belongs to the public domain and was released at the GUST meeting in Bachotek, 1997. The amount of disk space occupied by bitmap means “the flail”. We hope that others find thresh- graphics is a well-recognized problem. For example, ing EPS files useful, in order to get rid of chaff, i.e., a 300 dpi picture (A4) contains ca 8700000 pixels; redundant data. assuming that each CMYK pixel occupies four bytes, one obtains ca 35MB of disk space needed to store About the program the picture. Now, imagine a TEX-er, who is not allowed to Our package consists of two pairs of AWK programs use binary graphic data (because of the otherwise (cep.awk – uncep.awk and cop.awk– uncop.awk), magnificent DVIPS); thus our poor TEX-er usually four MS-DOS batch files and text information. cep.awk converts the binary data to hexadecimal EPS files, and cop.awk generate (on-the-fly) PostScript pro- thus doubling the required space, and next, after grams which, processed by Ghostscript, yield the compiling a document with TEX+DVIPS, the whole appropriate data compression. UNCEP and UNCOP graphic data is put into the resulting PostScript file, accomplish (using a similar technique) the reverse so the required space is doubled again — altogether process, i.e., uncompression. 140MB per one A4 page. The nightmare begins. CEP is devised for the compression of the This problem is not a new one; it was recognised usual bitmapped EPS files, containing a single, by Adobe a relatively long time ago. In the Post- hexadecimally-coded image; COP can be used to Script Level 2 specification, they included objects compress any PostScript data. called filters which enable data compression. In The question arises: Why use two packing particular, instead of hexadecimal data, one can techniques? The answer is simple: the efficiency use ASCII85 encoding (there are explanations of of compression is higher if a compression program abbreviations at the end of the article), run length knows in advance which kinds of data are to be compression, LZW compression, DCT (used in JPEG expected. In general, bitmaps are more regular files), and many others. Why not make use of (redundant) than arbitrary PostScript data, hence these tools? The question is not as silly as it may even simple algorithms turn out to be more efficient. look at the first glance, as there exist relatively few Tests show that in the best case (screen dumps) applications capable of generating well-compressed squeezing up to 10% of the original size is noth- PostScript graphics. ing unusual. Sometimes, however, no compression We decided to patch somehow this gap. We method gives a satisfactory result. In such a case, developed a little package enabling the compression one can always use encoding data using the ASCII85 of “normal” (non-compressed) graphic data. The filter, obtaining a reduction of a hexadecimal bitmap nature of the problem is more complex, however, size by approximately 35%. than one might expect. In particular, a universal, Below we give a brief description of CEP and always efficient compression technique does not ex- COP. So far, only the MS-DOS version of the ist. Choice of an optimal algorithm depends upon PostScript-compressors is available, but it should be the kind of data, form of the file and the expected easy to adapt our package to any platform, where application. Hence, the package has several “but- GAWK and Ghostscript are available. In this version tons” which enable controlling various aspects of the GNU implementation of AWK (GAWK-EMX.EXE) compression. and Aladdin Ghostscript interpreter (GS386.EXE) Actually, the name CEP is derived from “com- are used. pressed EPS”. Coincidentally, the name in Polish TUGboat, Volume 19 (1998), No. 3 — Proceedings of the 1998 Annual Meeting 267 Bogus law Jackowski, Piotr Pianowski, and Piotr Strzelczyk We tested the package using several Ghostscript One should remember that the names of input and and GAWK implementations; now we use Ghost- output files must differ. The program recognizes the script 5.10 and GAWK 3.0.3. following options: 8 —useASCII85 coding (default) CEP h or H —useHEX (hexadecimal) coding The CEP subpackage consists of the MS-DOS batch r or R —useRLE (RunLength) compression files cep.bat and uncep.bat and the AWK pro- (default) grams cep.awk and uncep.awk.First,AWK in- l or L —useLZW compression spects the source EPS file doing its best to recognize f or F — use Flate compression a position of a hexadecimal bitmap; next it creates (PDF and Level 3) an appropriate PostScript program; and then the n or N — don’t compress control is passed on to Ghostscript which just per- Invoking UNCEP is even simpler: forms the submitted program: encodes the bitmap uncep.bat in file out file and copies verbatim the remaining lines. The orig- h ih i inal preamble is slightly modified; nevertheless, all As mentioned, decompression and decoding meth- DSC comments are left intact. ods are taken from an input file. If the bitmap cannot be found or the AWK COP suspects that troubles may arise, the CEP engine gives up. The subpackage consists of the MS-DOS batch files The resulting file should be verified prior to cop.bat and uncop.bat,andtheAWK programs removing the original one, as the CEP heuristic cop.awk and uncop.awk. COP reads and encodes tricks may fail to fix the bitmap properly; moreover, appropriately the supplied data. No analysis of the due to Ghostscript bugs, premature removal of the PostScript data is performed, as the entire file is source may also be painful. encoded without changing even a bit. The only as- CEP never generates binary output — only hexa- pect that is taken into account is the DSC comment decimal or ASCII85 encoding are supported. This %%BoundingBox:; if it is found, COP inserts this is due to the fact that CEP-compressed EPS files comment in the preamble, otherwise the resulting are primarily meant to be used by TEX+DVIPS. file does not contain the bounding box information. Nevertheless, the resulting files can be used in other COP-generated files are readable by any Post- typesetting systems as so-called placeable EPS files. Script Level 2 interpreter. The applicability to non-TEX applications, however, UNCOP scans the header and deduces from it is somewhat limited, as binary TIFF previews (re- the method of decompression, hence no options are quired by WYSIWYG applications) may be misin- needed. UNCOP, unlike UNCEP, retrieves precisely terpreted by (G)AWK. the original file. It is still recommended, however, UNCEP requires that a CEP-compressed file that a user verifies whether the resulting file is was not changed. In particular, it relies on the properly interpreted by Ghostscript. Due to Ghost- information in a quasi-DSC comment %UNCEPInfo:. script bugs, premature removal of the source file This information can be destroyed by a seemingly after compression or decompression may turn out innocent modification (e.g., by adding or removing to be painful. a comment line). Note that the technique employed Since COP canbeusedtocompressanydatafor by CEP destroys, by its nature, the information arbitrary applications, binary encoding is allowed about the line-breaking structure of the hexadecimal also. The resulting files can be used with typesetting bitmap. Therefore, UNCEP cannot retrieve the orig- systems that accept so-called placeable EPSs. Un- inal file. Line-breaking structure does not make any fortunately, binary TIFF previewers make files after problem for a PostScript interpreter. There exist compression illegible for PostScript. programs, however, that read their own bitmapped The usage of COP is similar to that of CEP: EPS files, which for unknown reasons make use of cop.bat in file out file options such (sub)lexical information; Aldus PhotoStyler is h ih ih i a notable example. The program recognizes the following options: 8 —useASCII85 coding (default) b or B — use binary coding The command line invoking CEP is pretty sim- h or H —useHEX (hexadecimal) coding ple: r or R —useRLE (RunLength) compression cep.bat in file out file options (default) h ih ih i 268 TUGboat, Volume 19 (1998), No. 3 — Proceedings of the 1998 Annual Meeting Threshing EPS files l or L —useLZW compression colour photo images. It is just a weakness of all f or F — use Flate compression non-lossy techniques — algorithms employed by (PDF and Level 3) ARJ, ZIP, LHARC, and others would yield poor n or N — don’t compress results also. A reasonable alternative for data Observe that binary encoding is, in fact, no encoding of this kind would be DCT (JPEG) compression. at all. 3. As was mentioned above, ASCII85 encoding can The reverse process, i.e., UNCOP decompres- usually be recommended; it added, however, sion, is also straightforward: some troubles. First, due to Ghostscript bugs, we decided to add the (dummy) NullEncode uncop.bat in file out file h ih i filter which seems to cure the problem. But As with UNCEP, decompression and decoding meth- there is one more problem: ASCII85-encoded ods are taken from an input file. bitmaps may contain lines looking like DSC comments, i.e, they may begin with double A heap of remarks concerning our package percent signs, %%, or with a percent-exclamation The applied solution addresses several problems: sign pair, %! — why didn’t Adobe exclude the 1.
Recommended publications
  • Pdflib Text and Image Extraction Toolkit (TET) Manual
    ABC Text and Image Extraction Toolkit (TET) Version 5.2 Toolkit for extracting Text, Images, and other items from PDF Copyright © 2002–2019 PDFlib GmbH. All rights reserved. Protected by European and U.S. patents. PDFlib GmbH Franziska-Bilek-Weg 9, 80339 München, Germany www.pdflib.com phone +49 • 89 • 452 33 84-0 If you have questions check the PDFlib mailing list and archive at groups.yahoo.com/neo/groups/pdflib/info Licensing contact: [email protected] Support for commercial PDFlib licensees: [email protected] (please include your license number) This publication and the information herein is furnished as is, is subject to change without notice, and should not be construed as a commitment by PDFlib GmbH. PDFlib GmbH assumes no responsibility or lia- bility for any errors or inaccuracies, makes no warranty of any kind (express, implied or statutory) with re- spect to this publication, and expressly disclaims any and all warranties of merchantability, fitness for par- ticular purposes and noninfringement of third party rights. TET contains modified parts of the following third-party software: CMap resources. Copyright © 1990-2019 Adobe Zlib compression library, Copyright © 1995-2017 Jean-loup Gailly and Mark Adler TIFFlib image library, Copyright © 1988-1997 Sam Leffler, Copyright © 1991-1997 Silicon Graphics, Inc. Cryptographic software written by Eric Young, Copyright © 1995-1998 Eric Young ([email protected]) Independent JPEG Group’s JPEG software, Copyright © Copyright © 1991-2017, Thomas G. Lane, Guido Vollbeding Cryptographic software, Copyright © 1998-2002 The OpenSSL Project (www.openssl.org) Expat XML parser, Copyright © 2001-2017 Expat maintainers ICU International Components for Unicode, Copyright © 1995-2012 International Business Machines Corpo- ration and others OpenJPEG library, Copyright © 2002-2014, Université catholique de Louvain (UCL), Belgium TET contains the RSA Security, Inc.
    [Show full text]
  • DLI Implementation and Reference Guide
    Implementation and Reference Guide Datalogics Interface Datalogics® Datalogics DATALOGICS INTERFACE Implementation and Reference Guide This guide is part of the Adobe® PDF Library v6.1.1Plus suite; 02/15/05. Copyright 1999-2005 Datalogics Incorporated. All Rights Reserved. Use of Datalogics software is subject to the applicable license agreement. DL Interface is a trademark of Datalogics Incorporated. Other products mentioned herein as Datalogics prod- ucts are also trademarks or registered trademarks of Datalogics, Incorporated. Adobe, Adobe PDF Library, Portable Document Format (PDF), PostScript, Acrobat, Distiller, Exchange and Reader are trademarks of Adobe Systems Incorporated. HP and HP-UX are registered trademarks of Hewlett Packard Corporation. IBM, AIX, AS/400, OS/400, MVS, and OS/390 are registered trademarks of International Business Machines. Java, J2EE, J2SE, J2ME, all Java-based marks, Sun and Solaris are trademarks or registered trademarks of Sun Microsystems, Inc. in the United States and other countries. Linux is a registered trademark of Linus Torvalds. Microsoft, Windows and Windows NT are trademarks or registered trademarks of Microsoft Corporation. SAS/C is a registered trademark of SAS Institute Inc. UNIX is a registered trademark of The Open Group. VeriSign® is a registered trademark of VeriSign, Inc. in the United States and/or other countries. All other trademarks and registered trademarks are the property of their respective owners. For additional information, contact: Datalogics, Incorporated 101 North Wacker
    [Show full text]
  • Python Language
    Python Language #python Table of Contents About 1 Chapter 1: Getting started with Python Language 2 Remarks 2 Versions 3 Python 3.x 3 Python 2.x 3 Examples 4 Getting Started 4 Verify if Python is installed 4 Hello, World in Python using IDLE 5 Hello World Python file 5 Launch an interactive Python shell 6 Other Online Shells 7 Run commands as a string 7 Shells and Beyond 8 Creating variables and assigning values 8 User Input 12 IDLE - Python GUI 13 Troubleshooting 14 Datatypes 15 Built-in Types 15 Booleans 15 Numbers 15 Strings 16 Sequences and collections 16 Built-in constants 17 Testing the type of variables 18 Converting between datatypes 18 Explicit string type at definition of literals 19 Mutable and Immutable Data Types 19 Built in Modules and Functions 20 Block Indentation 24 Spaces vs. Tabs 25 Collection Types 25 Help Utility 30 Creating a module 31 String function - str() and repr() 32 repr() 33 str() 33 Installing external modules using pip 34 Finding / installing a package 34 Upgrading installed packages 34 Upgrading pip 35 Installation of Python 2.7.x and 3.x 35 Chapter 2: *args and **kwargs 38 Remarks 38 h11 38 h12 38 h13 38 Examples 39 Using *args when writing functions 39 Using **kwargs when writing functions 39 Using *args when calling functions 40 Using **kwargs when calling functions 41 Using *args when calling functions 41 Keyword-only and Keyword-required arguments 42 Populating kwarg values with a dictionary 42 **kwargs and default values 42 Chapter 3: 2to3 tool 43 Syntax 43 Parameters 43 Remarks 44 Examples 44 Basic
    [Show full text]
  • A Proposal of Substitute for Base85/64 – Base91
    A Proposal of Substitute for Base85/64 – Base91 Dake He School of Information Science & Technology, Southwest Jiaotong University, Chengdu 610031,China College of Informatics, South China Agricultural University, Guangzhou 510642, China [email protected] Yu Sun, Zhen Jia, Xiuying Yu, Wei Guo, Wei He, Chao Qi School of Information Science & Technology, Southwest Jiaotong University, Chengdu 610031,China Xianhui Lu Key Lab. of Information Security, Chinese Academy of Sciences, Beijing 100039,China ABSTRACT not control character or “-”(hyphen). There are totally 94 of such ASCII characters, their corresponding digital The coding transformation method, called Base91, is coding being all integers ranging from 32 through 126 characterized by its output of 91 printable ASCII with the exception of 45. E-mail written in these ASCII characters. Base91 has a higher encoding efficiency than characters is compatible with the Internet standard SMTP, Base85/64, and higher encoding rate than Base85. and can be transferred in nearly all the E-mail systems. Besides, Base91 provides compatibility with any Nowadays, as Content-Transfer-Encoding to provide bit-length input sequence without additional filling compatibility with the E-mail, Base64[1,2] code is usually declaration except for his codeword self. One can use employed. Base91 as a substitute for Base85 and Base64 to get some Base64 coding divides the input sequence into blocks benefits in restricted situations. being 6-bits long to be used as variable implementation Keywords: Base91; Base85; Base64; printable ASCII mapping, the mapping is denoted by characters; IPv6 Base64[ ]: X →Y where the variable or original image set X includes all 64 1.
    [Show full text]
  • Answers to Exercises
    Answers to Exercises A bird does not sing because he has an answer, he sings because he has a song. —Chinese Proverb Intro.1: abstemious, abstentious, adventitious, annelidous, arsenious, arterious, face- tious, sacrilegious. Intro.2: When a software house has a popular product they tend to come up with new versions. A user can update an old version to a new one, and the update usually comes as a compressed file on a floppy disk. Over time the updates get bigger and, at a certain point, an update may not fit on a single floppy. This is why good compression is important in the case of software updates. The time it takes to compress and decompress the update is unimportant since these operations are typically done just once. Recently, software makers have taken to providing updates over the Internet, but even in such cases it is important to have small files because of the download times involved. 1.1: (1) ask a question, (2) absolutely necessary, (3) advance warning, (4) boiling hot, (5) climb up, (6) close scrutiny, (7) exactly the same, (8) free gift, (9) hot water heater, (10) my personal opinion, (11) newborn baby, (12) postponed until later, (13) unexpected surprise, (14) unsolved mysteries. 1.2: A reasonable way to use them is to code the five most-common strings in the text. Because irreversible text compression is a special-purpose method, the user may know what strings are common in any particular text to be compressed. The user may specify five such strings to the encoder, and they should also be written at the start of the output stream, for the decoder’s use.
    [Show full text]
  • Numbers 1 to 100
    Numbers 1 to 100 PDF generated using the open source mwlib toolkit. See http://code.pediapress.com/ for more information. PDF generated at: Tue, 30 Nov 2010 02:36:24 UTC Contents Articles −1 (number) 1 0 (number) 3 1 (number) 12 2 (number) 17 3 (number) 23 4 (number) 32 5 (number) 42 6 (number) 50 7 (number) 58 8 (number) 73 9 (number) 77 10 (number) 82 11 (number) 88 12 (number) 94 13 (number) 102 14 (number) 107 15 (number) 111 16 (number) 114 17 (number) 118 18 (number) 124 19 (number) 127 20 (number) 132 21 (number) 136 22 (number) 140 23 (number) 144 24 (number) 148 25 (number) 152 26 (number) 155 27 (number) 158 28 (number) 162 29 (number) 165 30 (number) 168 31 (number) 172 32 (number) 175 33 (number) 179 34 (number) 182 35 (number) 185 36 (number) 188 37 (number) 191 38 (number) 193 39 (number) 196 40 (number) 199 41 (number) 204 42 (number) 207 43 (number) 214 44 (number) 217 45 (number) 220 46 (number) 222 47 (number) 225 48 (number) 229 49 (number) 232 50 (number) 235 51 (number) 238 52 (number) 241 53 (number) 243 54 (number) 246 55 (number) 248 56 (number) 251 57 (number) 255 58 (number) 258 59 (number) 260 60 (number) 263 61 (number) 267 62 (number) 270 63 (number) 272 64 (number) 274 66 (number) 277 67 (number) 280 68 (number) 282 69 (number) 284 70 (number) 286 71 (number) 289 72 (number) 292 73 (number) 296 74 (number) 298 75 (number) 301 77 (number) 302 78 (number) 305 79 (number) 307 80 (number) 309 81 (number) 311 82 (number) 313 83 (number) 315 84 (number) 318 85 (number) 320 86 (number) 323 87 (number) 326 88 (number)
    [Show full text]
  • Pdflib Text and Image Extraction Toolkit (TET) 5.3 Manual
    ABC Text and Image Extraction Toolkit (TET) Version 5.3 Toolkit for extracting Text, Images, and other items from PDF Copyright © 2002–2021 PDFlib GmbH. All rights reserved. Protected by European and U.S. patents. PDFlib GmbH Franziska-Bilek-Weg 9, 80339 München, Germany www.pdflib.com phone +49 • 89 • 452 33 84-0 [email protected] [email protected] (please include your license number) This publication and the information herein is furnished as is, is subject to change without notice, and should not be construed as a commitment by PDFlib GmbH. PDFlib GmbH assumes no responsibility or lia- bility for any errors or inaccuracies, makes no warranty of any kind (express, implied or statutory) with re- spect to this publication, and expressly disclaims any and all warranties of merchantability, fitness for par- ticular purposes and noninfringement of third party rights. TET contains the following third-party components: Adobe CMap resources, Copyright © 1990-2019 Adobe AES, Arcfour and SHA algorithms, Copyright © 1995-1998 Eric Young Brotli decompression code, Copyright © 2009, 2010, 2013-2016 by the Brotli Authors Expat XML parser, Copyright © 2001-2017 Expat maintainers ICClib, Copyright © 1997-2002 Graeme W. Gill ICU International Components for Unicode, Copyright © 1991-2020 Unicode, Inc. libjpeg, Copyright © 1991-2019, Thomas G. Lane, Guido Vollbeding Libtiff image library, Copyright © 1988-1997 Sam Leffler, Copyright © 1991-1997 Silicon Graphics, Inc. MD5 message digest, Copyright © 1991-2, RSA Data Security, Inc. OpenJPEG, Copyright ©
    [Show full text]
  • Command Line Interface Pitstop Server
    Command Line Interface PitStop Server Contents 1. Copyrights............................................................................................................................................... 5 2. Introduction............................................................................................................................................. 6 2.1 Short summary.......................................................................................................................................6 2.2 Objectives................................................................................................................................................6 2.2.1 Target group.................................................................................................................................6 2.2.2 Ease of use...................................................................................................................................6 2.2.3 Distribution................................................................................................................................... 7 2.2.4 Multiple invocations..................................................................................................................... 7 3. The Command Line Interface..................................................................................................................8 3.1 Command line options..........................................................................................................................
    [Show full text]
  • Assembler Service and DDX Reference
    bbc Assembler Service and DDX Reference Adobe Experience Manager 6.3 Forms May 2017 Legal Notices For more information, see http://help.adobe.com/en_US/legalnotices/index.html.s Contents 1 About This Help .........................................................................................................................12 Additional information...............................................................................................................................................................12 Part I: DDX User Document 2 Introducing Document Description XML.................................................................................14 DDX document structure ..........................................................................................................................................................14 DDX building blocks....................................................................................................................................................................14 DDX principles...............................................................................................................................................................................15 Result elements ......................................................................................................................................................................16 Source elements.....................................................................................................................................................................18
    [Show full text]
  • Mom Documentation Release 0.1.3
    mom Documentation Release 0.1.3 Yesudeep Mangalapilly July 30, 2015 Contents 1 Getting the library 3 2 User Guides 5 2.1 Contributing...............................................5 3 API Documentation 7 3.1 mom ...................................................7 3.2 Codecs.................................................. 28 3.3 Cryptography primitives......................................... 46 3.4 Networking................................................ 51 3.5 Operating System helpers........................................ 52 4 Contribute 55 4.1 Contributing............................................... 55 5 Indices and tables 57 Python Module Index 59 i ii mom Documentation, Release 0.1.3 Mother of all our Python projects. Batteries for Python. Contents 1 mom Documentation, Release 0.1.3 2 Contents CHAPTER 1 Getting the library $ pip install mom or $ git clone git://github.com/gorakhargosh/mom.git or $ git clone http://code.google.com/p/python-mom/ $ cd mom $ python setup.py install 3 mom Documentation, Release 0.1.3 4 Chapter 1. Getting the library CHAPTER 2 User Guides 2.1 Contributing Welcome hackeratti! So you have got something you would like to see in mom? Whee. This document will help you get started. 2.1.1 Important URLs mom uses git to track code history and hosts its code repository at github. The issue tracker is where you can file bug reports and request features or enhancements to mom. 2.1.2 Before you start Ensure your system has the following programs and libraries installed before beginning to hack: 1. Python 2. git 3. ssh 2.1.3 Setting up the Work Environment mom makes extensive use of zc.buildout to set up its work environment. You should get familiar with it. Steps to setting up a clean environment: 1.
    [Show full text]
  • Glasswall SDK Documentation
    Glasswall SDK Documentation Glasswall Solutions Ltd Thur May 30 2019 1 Table of Contents Glasswall SDK Documentation ................................................................................................................ 1 Glasswall API Overview .......................................................................................................................... 5 Glasswall Configuration ........................................................................................................................... 7 Overview .............................................................................................................................................. 7 Watermarking ................................................................................................................................... 7 Content Management ........................................................................................................................ 7 Configuration Management API........................................................................................................... 7 Terminology ..................................................................................................................................... 8 Configuration Management Example ................................................................................................... 9 Glasswall Features .................................................................................................................................. 10 Determine File
    [Show full text]
  • Downloaded Multi-Valued Hash Table Mapping Each Fngerprint Id to 2018-12-07)
    Dalke J Cheminform (2019) 11:76 https://doi.org/10.1186/s13321-019-0398-8 Journal of Cheminformatics METHODOLOGY Open Access The chemfp project Andrew Dalke* Abstract The chemfp project has had four main goals: (1) promote the FPS format as a text-based exchange format for dense binary cheminformatics fngerprints, (2) develop a high-performance implementation of the BitBound algorithm that could be used as an efective baseline to benchmark new similarity search implementations, (3) experiment with funding a pure open source software project through commercial sales, and (4) publish the results and lessons learned as a guide for future implementors. The FPS format has had only minor success, though it did infuence devel- opment of the FPB binary format, which is faster to load but more complex. Both are summarized. The chemfp bench- mark and the no-cost/open source version of chemfp are proposed as a reference baseline to evaluate the efective- ness of other similarity search tools. They are used to evaluate the faster commercial version of chemfp, which can test 130 million 1024-bit fngerprint Tanimotos per second on a single core of a standard x86-64 server machine. When combined with the BitBound algorithm, a k 1000 nearest-neighbor search of the 1.8 million 2048-bit Morgan fnger- prints of ChEMBL 24 averages 27 ms/query. =The same search of 970 million PubChem fngerprints averages 220 ms/ query, making chemfp one of the fastest CPU-based similarity search implementations. Modern CPUs are fast enough that memory bandwidth and latency are now important factors.
    [Show full text]