SumatraPDF x86/x64 Optimized Builds (All languages) 
Sunday, April 06 2014 . 09:28 AM
Introduction
Sumatra PDF is a slim, free, open-source PDF reader for Windows. Portable out of the box. Sumatra has a minimalistic design. Simplicity has a higher priority than a lot of features.
It's small and starts up very fast. It's designed for portable use: only one file so you can run it from external USB drive. Doesn't write to registry.


Description
I am compiling SumatraPDF from the original sources, to make freely available my optimized compiles. I am not modifying original code, but applying a different build chain to gather a better executable, in terms of native x64 support as well as regular x86; faster execution speed; smaller executable size; and lower memory footprint.
Of course, the rest of features, should be exactly the same as in official SumatraPDF.
To prevent any possible confusion, my releases are groupped under the SumatraPDFOpt name, as an acronym of "SumatraPDF x86/x64 Optimized Builds".


License
SumatraPDFOpt is totally free, both for commercial, and private usage.


Support
Before reporting an error in SumatraPDFOpt, please make sure it is not inherited from SumatraPDF stable, or SumatraPDF prerelease. If that is the case, you can report it in the official's issue tracker. You can see official changes in the official repository.


Screenshots





Features
- Added x64 compile for native x64 systems.
- Compiled with Visual C++ 2012 RC instead of Visual C++ 2008 to achieve better quality code (32 bit executable is 4,362 Kb. instead of 4,364 Kb. in the official compile).
- Compiled with /fp:fast to increase floating-point operations performance at the cost of some precision loss not noticeable on SumatraPDFOpt.
- Compiled with /Zp16 to get faster code when accesing data structures specially on newer CPU.
- Compiled with /GA to get faster and smaller threading code.
- Compiled with /GS- to get faster and smaller variable accessing.
- Compiled with /favor:blend to get a good execution speed in both AMD and Intel x64 CPUs.
- Compiled with /vmb to get faster and smaller acceses to objects.
- Compiled with /QIfist
- Linked with /opt:icf,4 to remove duplicate code in resulting executables.
- Linked with /LARGEADDRESSAWARE to support addresses of up to 3 Gb. in x86 processors.
- Linked with /WS:AGGRESSIVE to agressively reduce memory usage when inactive.
- ZIP package created with KZIP 14/04/2007 to reduce distribution size.
- Added pre-release branding that was missing in my latest builds.
- Separate builds for x86 generic, x86 SSE, x86 SSE2 and x64 generic (x64 AMD and x64 Intel generate exactly the same code).
- Separate downloads per each optimized architecture.
- Remaped check for updates URLs.
- Downloads moved from Megaupload to website server.
- Identified builds by the name Sumatra PDF Opt.
- Added credit section on About dialog.
- x64 SIMD accelerated JPEG Turbo decoding.
- Optimization flags applied over more sets (Fitz, Freetype, libjpeg, ...).
- Added -O9 NASM optimization flag.
- Using Profile Guided Optimizations (PGO) for all builds builds. 200 KB smaller, and 10% faster.
- Activated BLACK_ON_YELLOW.
- Linked with ASMLib 2.30 by Agner Fog (http://www.agner.org/optimize/) to get a slight speed increase and merory usage reduce.
- Since http://nikkhokkho.sourceforge.net is the new permanent URL, all internal links has been properly updated.
- Upgraded to NASM 2.10.03 with some x64 optimizations.
- Synctex enhancements enabled again as per popular request.
- Upgraded to VC++ 2012 that should fix SSE builds requiring SSE2, and improve overall stability and performance.
- Executables compressed with MPRESS 2.19 with s compression, instead of UPX 3.07 to reduce executable size (32 bit executable is once compressed 1,650 Kb. instead of 2,105 Kb. in the official compile).
- Compiled with libjpeg-turbo 1.3 pre-beta r856.
- Compiled with /GF to pool common strings making executable smaller.
- Added PGO instrumentation for XPS, CBZ, CBR and DjVu files too. Optimized functions grow from 19% to 23%.
- Enabled colored SumatraPDFOpt in main window.
- Included SumatraPDF.chm multilanguage help file (English, Chinese, Spanish, Japanese, Portuguese, Russian, German and Romanian).
- Built with experimental ribbon interface (removed as of r4848).
- Based on SumatraPDF 2.2 r6650 (2012-09-23) code base.


Features now available in official version
- Linked with /RELEASE to generate a checksum that will make easy detecting corruption in the program due to malware attacks.
- Built with CHM support.


Performance
Doing a benchmark with 1.3 r2360 comparing the official build with my optimized x64 one, SumatraPDFOpt has reported to be between 15% and 40% faster than the official version, depending on the PDF sets used.
32 bit builds should see a lower improvement.


Sponsors


Download
- Generic x86 version (1.8 Mb. in ZIP format). Valid for Intel Pentium; AMD K6; Cyrix 6x86 or later.
- SSE optimized x86 version (1.8 Mb. in ZIP format). Valid for Intel Pentium III; AMD Athlon XP or later.
- SSE2 optimized x86 version (1.8 Mb. in ZIP format). Valid for Intel Core; AMD Athlon64 or later.
- Generic x64 version (2.0 Mb. in ZIP format). Valid for OS running any x64 edition of Windows.
- Makefiles (33 Kb. in ZIP format). Download it if you want to compile or rebuild it at your own


Links
- Official SumatraPDFOpt's website: nikkhokkho.sourceforge.net/static.php?page=SumatraPDFOpt
- Official author's website: www.javiergutierrezchamorro.com.
- Official Sumatra's website: blog.kowalczyk.info/software/sumatrapdf.


Awards