3

When using packages inputenc and fontenc I observed that the inputenc package strongly slows the compilation speed. The situation is as follows. Let we have

\usepackage[cp1251]{inputenc}

\usepackage[russian]{babel}

The [russian]{babel} switches the T2A-coding which allows to use the russian letter \"e (russian yo). The point here is that the T2A and cp1251 code character maps almost(!) coincide with an exception of this only symbol.

I faced no discrepancies when using any LaTeX-commands; including AMS math-commands. Having typed some (russian) text in Windows 1251 encoding I may type this letter in a keyboard and watch it in a dvi-file only if I include [cp1251]{inputenc} into preamble. Without it I shall have some different (cyrillic) symbol instead of \"e. This is the first part of my observation.

The second one is that the compilation speeds under the \usepackage[cp1251]{inputenc} and without it differ in factor 3(!). So, if I do not use explicitly the yo-keybutton I could work nicely without cp1251 in the framework of [russian]{babel}'s T2A encoding and get, each time I click the compilation button in my MiKTeX, the momentary appearance of dvi-viewer. Otherwise, i.e. with explicit usage of the yo-letter, I should include [cp1251]{inputenc} and wait three times slowly in order to get the same result.

Say,typesetting some 250-pages-long text spends one second for TeX-compilation and this is good but waiting for 3 seconds each time, I consider, is not (do not ask why). Even though the file contains no the yo-letter. Bear in mind that the pdf-compilation is slower then the dvi-one in about factor two.

Another trouble is that all the auxiliary aux-files contain (under inputenc) the abracadabra stream of commands like \CYRYO etc. They are heavily glanced over (+ BiBTeX's problems) and words containing the \"e (instead of explicit "yo"-symbol) have not been detected by a dictionary checker.

Finally I would like to throw the [cp1251]{inputenc} out of preamble and to work only with [russian]{babel}. Is this real? It seems to me that the problem is easily solvable for gurus. In fact I would like to include into my preamble some corrections (catcodes, @'s, ...?) just for these two symbols "yo" and "YO".

In Windows cp1251 encoding they have code numbers \symbol{184} and \symbol{168} respectively. Again, the profit is a 3-fold speed acceleration of TeX-compilation. I think that the same problem takes place for other languages.

PS. By the way if you do not dvi- but pdf-compilation then the compilation time grows still more.

7
  • If inputenc is slowing you down by 3 times something seems to be wrong. If you try to map your input straight to the font encoding without using inputenc (and without using xetex or luatex) then your document will be very fragile and non-portable. Commented Jun 6, 2014 at 13:41
  • Ever thought of switching to utf8 encoding and use a unicode-aware engine like Lua(La)TeX or Xe(La)TeX? Disclaimer: Compilation speed will be slower.
    – Johannes_B
    Commented Jun 6, 2014 at 13:41
  • Maybe the system is trying to auto-generate some files in the background (and failing, so it has to retry at each compilation)? Commented Jun 6, 2014 at 15:02
  • Let me add some specification to my question. I took a 270-pages book in Russian and copied it several times into one file. The result is a 2000 pages dvi-file. Here are some details: book-12pt, no one include-graphics, no one \newcommand. The only packages are amssymb, amsmath, calc, xy, and babel[russian]. The file has been typed in the Windows 1251 encoding. No letter russian ё there.
    – user40791
    Commented Jun 6, 2014 at 18:19
  • All the auxiliary aux- blg- etc files have already been computed.There is a tableofcontents command. The system: MiKTeX 2.3 under Windows machine. Batch-mode, no any temporary windows pop up. The dvi-viewer is not opened. Only compilation speed is counted. Now the test results. With \usepackage[cp1251]{inputenc} I get 5.1 seconds time and without it I get 2.1 seconds. Plus/minus 0.2 secs. Doing the same with pdf-latex I get respectively 7.7 vs 5.0 secs. When working with realistic files I get usually the factor around 2-3. What for is the question. For one rarily used symbol ё?
    – user40791
    Commented Jun 6, 2014 at 18:49

1 Answer 1

1

I took a paragraph of your question and generated some Cyrilic text via google translate (sorry if it is all wrong:-) and copied it 30 times as below. Without inputenc I get times

real    0m2.550s
user    0m1.981s
sys     0m0.076s

with inputenc I get times

real    0m2.093s
user    0m1.934s
sys     0m0.109s

So fractionally faster (probably the time saved not making a warning that inputenc hasn't been used) It is nowhere near three times slower on this 6 page document.

\documentclass{article}

\usepackage[cp1251]{inputenc}
\usepackage[T2A]{fontenc}
\usepackage[russian]{babel}


\begin{document}


Второй является то, что скорость компиляции под \ usepackage [cp1251]
{inputenc} и без него различаются в 3 раза (!). Так что, если я не
использую явно йо-keybutton я мог работать хорошо без cp1251 в рамках
[русский] {Babel} 'ы кодирования T2A и получить, каждый раз, когда я
нажимаю на кнопку компиляции в моей MiKTeX, мгновенного появления
DVI-зритель. В противном случае, то есть с явным использованием
йо-письма, я должен включить [cp1251] {inputenc} и ждать три раза
медленно, чтобы получить тот же результат.

Второй является то, что скорость компиляции под \ usepackage [cp1251]
{inputenc} и без него различаются в 3 раза (!). Так что, если я не
использую явно йо-keybutton я мог работать хорошо без cp1251 в рамках
[русский] {Babel} 'ы кодирования T2A и получить, каждый раз, когда я
нажимаю на кнопку компиляции в моей MiKTeX, мгновенного появления
DVI-зритель. В противном случае, то есть с явным использованием
йо-письма, я должен включить [cp1251] {inputenc} и ждать три раза
медленно, чтобы получить тот же результат.

Второй является то, что скорость компиляции под \ usepackage [cp1251]
{inputenc} и без него различаются в 3 раза (!). Так что, если я не
использую явно йо-keybutton я мог работать хорошо без cp1251 в рамках
[русский] {Babel} 'ы кодирования T2A и получить, каждый раз, когда я
нажимаю на кнопку компиляции в моей MiKTeX, мгновенного появления
DVI-зритель. В противном случае, то есть с явным использованием
йо-письма, я должен включить [cp1251] {inputenc} и ждать три раза
медленно, чтобы получить тот же результат.

Второй является то, что скорость компиляции под \ usepackage [cp1251]
{inputenc} и без него различаются в 3 раза (!). Так что, если я не
использую явно йо-keybutton я мог работать хорошо без cp1251 в рамках
[русский] {Babel} 'ы кодирования T2A и получить, каждый раз, когда я
нажимаю на кнопку компиляции в моей MiKTeX, мгновенного появления
DVI-зритель. В противном случае, то есть с явным использованием
йо-письма, я должен включить [cp1251] {inputenc} и ждать три раза
медленно, чтобы получить тот же результат.

Второй является то, что скорость компиляции под \ usepackage [cp1251]
{inputenc} и без него различаются в 3 раза (!). Так что, если я не
использую явно йо-keybutton я мог работать хорошо без cp1251 в рамках
[русский] {Babel} 'ы кодирования T2A и получить, каждый раз, когда я
нажимаю на кнопку компиляции в моей MiKTeX, мгновенного появления
DVI-зритель. В противном случае, то есть с явным использованием
йо-письма, я должен включить [cp1251] {inputenc} и ждать три раза
медленно, чтобы получить тот же результат.

Второй является то, что скорость компиляции под \ usepackage [cp1251]
{inputenc} и без него различаются в 3 раза (!). Так что, если я не
использую явно йо-keybutton я мог работать хорошо без cp1251 в рамках
[русский] {Babel} 'ы кодирования T2A и получить, каждый раз, когда я
нажимаю на кнопку компиляции в моей MiKTeX, мгновенного появления
DVI-зритель. В противном случае, то есть с явным использованием
йо-письма, я должен включить [cp1251] {inputenc} и ждать три раза
медленно, чтобы получить тот же результат.

Второй является то, что скорость компиляции под \ usepackage [cp1251]
{inputenc} и без него различаются в 3 раза (!). Так что, если я не
использую явно йо-keybutton я мог работать хорошо без cp1251 в рамках
[русский] {Babel} 'ы кодирования T2A и получить, каждый раз, когда я
нажимаю на кнопку компиляции в моей MiKTeX, мгновенного появления
DVI-зритель. В противном случае, то есть с явным использованием
йо-письма, я должен включить [cp1251] {inputenc} и ждать три раза
медленно, чтобы получить тот же результат.

Второй является то, что скорость компиляции под \ usepackage [cp1251]
{inputenc} и без него различаются в 3 раза (!). Так что, если я не
использую явно йо-keybutton я мог работать хорошо без cp1251 в рамках
[русский] {Babel} 'ы кодирования T2A и получить, каждый раз, когда я
нажимаю на кнопку компиляции в моей MiKTeX, мгновенного появления
DVI-зритель. В противном случае, то есть с явным использованием
йо-письма, я должен включить [cp1251] {inputenc} и ждать три раза
медленно, чтобы получить тот же результат.

Второй является то, что скорость компиляции под \ usepackage [cp1251]
{inputenc} и без него различаются в 3 раза (!). Так что, если я не
использую явно йо-keybutton я мог работать хорошо без cp1251 в рамках
[русский] {Babel} 'ы кодирования T2A и получить, каждый раз, когда я
нажимаю на кнопку компиляции в моей MiKTeX, мгновенного появления
DVI-зритель. В противном случае, то есть с явным использованием
йо-письма, я должен включить [cp1251] {inputenc} и ждать три раза
медленно, чтобы получить тот же результат.

Второй является то, что скорость компиляции под \ usepackage [cp1251]
{inputenc} и без него различаются в 3 раза (!). Так что, если я не
использую явно йо-keybutton я мог работать хорошо без cp1251 в рамках
[русский] {Babel} 'ы кодирования T2A и получить, каждый раз, когда я
нажимаю на кнопку компиляции в моей MiKTeX, мгновенного появления
DVI-зритель. В противном случае, то есть с явным использованием
йо-письма, я должен включить [cp1251] {inputenc} и ждать три раза
медленно, чтобы получить тот же результат.

Второй является то, что скорость компиляции под \ usepackage [cp1251]
{inputenc} и без него различаются в 3 раза (!). Так что, если я не
использую явно йо-keybutton я мог работать хорошо без cp1251 в рамках
[русский] {Babel} 'ы кодирования T2A и получить, каждый раз, когда я
нажимаю на кнопку компиляции в моей MiKTeX, мгновенного появления
DVI-зритель. В противном случае, то есть с явным использованием
йо-письма, я должен включить [cp1251] {inputenc} и ждать три раза
медленно, чтобы получить тот же результат.

Второй является то, что скорость компиляции под \ usepackage [cp1251]
{inputenc} и без него различаются в 3 раза (!). Так что, если я не
использую явно йо-keybutton я мог работать хорошо без cp1251 в рамках
[русский] {Babel} 'ы кодирования T2A и получить, каждый раз, когда я
нажимаю на кнопку компиляции в моей MiKTeX, мгновенного появления
DVI-зритель. В противном случае, то есть с явным использованием
йо-письма, я должен включить [cp1251] {inputenc} и ждать три раза
медленно, чтобы получить тот же результат.

Второй является то, что скорость компиляции под \ usepackage [cp1251]
{inputenc} и без него различаются в 3 раза (!). Так что, если я не
использую явно йо-keybutton я мог работать хорошо без cp1251 в рамках
[русский] {Babel} 'ы кодирования T2A и получить, каждый раз, когда я
нажимаю на кнопку компиляции в моей MiKTeX, мгновенного появления
DVI-зритель. В противном случае, то есть с явным использованием
йо-письма, я должен включить [cp1251] {inputenc} и ждать три раза
медленно, чтобы получить тот же результат.

Второй является то, что скорость компиляции под \ usepackage [cp1251]
{inputenc} и без него различаются в 3 раза (!). Так что, если я не
использую явно йо-keybutton я мог работать хорошо без cp1251 в рамках
[русский] {Babel} 'ы кодирования T2A и получить, каждый раз, когда я
нажимаю на кнопку компиляции в моей MiKTeX, мгновенного появления
DVI-зритель. В противном случае, то есть с явным использованием
йо-письма, я должен включить [cp1251] {inputenc} и ждать три раза
медленно, чтобы получить тот же результат.

Второй является то, что скорость компиляции под \ usepackage [cp1251]
{inputenc} и без него различаются в 3 раза (!). Так что, если я не
использую явно йо-keybutton я мог работать хорошо без cp1251 в рамках
[русский] {Babel} 'ы кодирования T2A и получить, каждый раз, когда я
нажимаю на кнопку компиляции в моей MiKTeX, мгновенного появления
DVI-зритель. В противном случае, то есть с явным использованием
йо-письма, я должен включить [cp1251] {inputenc} и ждать три раза
медленно, чтобы получить тот же результат.

Второй является то, что скорость компиляции под \ usepackage [cp1251]
{inputenc} и без него различаются в 3 раза (!). Так что, если я не
использую явно йо-keybutton я мог работать хорошо без cp1251 в рамках
[русский] {Babel} 'ы кодирования T2A и получить, каждый раз, когда я
нажимаю на кнопку компиляции в моей MiKTeX, мгновенного появления
DVI-зритель. В противном случае, то есть с явным использованием
йо-письма, я должен включить [cp1251] {inputenc} и ждать три раза
медленно, чтобы получить тот же результат.

Второй является то, что скорость компиляции под \ usepackage [cp1251]
{inputenc} и без него различаются в 3 раза (!). Так что, если я не
использую явно йо-keybutton я мог работать хорошо без cp1251 в рамках
[русский] {Babel} 'ы кодирования T2A и получить, каждый раз, когда я
нажимаю на кнопку компиляции в моей MiKTeX, мгновенного появления
DVI-зритель. В противном случае, то есть с явным использованием
йо-письма, я должен включить [cp1251] {inputenc} и ждать три раза
медленно, чтобы получить тот же результат.

Второй является то, что скорость компиляции под \ usepackage [cp1251]
{inputenc} и без него различаются в 3 раза (!). Так что, если я не
использую явно йо-keybutton я мог работать хорошо без cp1251 в рамках
[русский] {Babel} 'ы кодирования T2A и получить, каждый раз, когда я
нажимаю на кнопку компиляции в моей MiKTeX, мгновенного появления
DVI-зритель. В противном случае, то есть с явным использованием
йо-письма, я должен включить [cp1251] {inputenc} и ждать три раза
медленно, чтобы получить тот же результат.

Второй является то, что скорость компиляции под \ usepackage [cp1251]
{inputenc} и без него различаются в 3 раза (!). Так что, если я не
использую явно йо-keybutton я мог работать хорошо без cp1251 в рамках
[русский] {Babel} 'ы кодирования T2A и получить, каждый раз, когда я
нажимаю на кнопку компиляции в моей MiKTeX, мгновенного появления
DVI-зритель. В противном случае, то есть с явным использованием
йо-письма, я должен включить [cp1251] {inputenc} и ждать три раза
медленно, чтобы получить тот же результат.

Второй является то, что скорость компиляции под \ usepackage [cp1251]
{inputenc} и без него различаются в 3 раза (!). Так что, если я не
использую явно йо-keybutton я мог работать хорошо без cp1251 в рамках
[русский] {Babel} 'ы кодирования T2A и получить, каждый раз, когда я
нажимаю на кнопку компиляции в моей MiKTeX, мгновенного появления
DVI-зритель. В противном случае, то есть с явным использованием
йо-письма, я должен включить [cp1251] {inputenc} и ждать три раза
медленно, чтобы получить тот же результат.

Второй является то, что скорость компиляции под \ usepackage [cp1251]
{inputenc} и без него различаются в 3 раза (!). Так что, если я не
использую явно йо-keybutton я мог работать хорошо без cp1251 в рамках
[русский] {Babel} 'ы кодирования T2A и получить, каждый раз, когда я
нажимаю на кнопку компиляции в моей MiKTeX, мгновенного появления
DVI-зритель. В противном случае, то есть с явным использованием
йо-письма, я должен включить [cp1251] {inputenc} и ждать три раза
медленно, чтобы получить тот же результат.

Второй является то, что скорость компиляции под \ usepackage [cp1251]
{inputenc} и без него различаются в 3 раза (!). Так что, если я не
использую явно йо-keybutton я мог работать хорошо без cp1251 в рамках
[русский] {Babel} 'ы кодирования T2A и получить, каждый раз, когда я
нажимаю на кнопку компиляции в моей MiKTeX, мгновенного появления
DVI-зритель. В противном случае, то есть с явным использованием
йо-письма, я должен включить [cp1251] {inputenc} и ждать три раза
медленно, чтобы получить тот же результат.

Второй является то, что скорость компиляции под \ usepackage [cp1251]
{inputenc} и без него различаются в 3 раза (!). Так что, если я не
использую явно йо-keybutton я мог работать хорошо без cp1251 в рамках
[русский] {Babel} 'ы кодирования T2A и получить, каждый раз, когда я
нажимаю на кнопку компиляции в моей MiKTeX, мгновенного появления
DVI-зритель. В противном случае, то есть с явным использованием
йо-письма, я должен включить [cp1251] {inputenc} и ждать три раза
медленно, чтобы получить тот же результат.

Второй является то, что скорость компиляции под \ usepackage [cp1251]
{inputenc} и без него различаются в 3 раза (!). Так что, если я не
использую явно йо-keybutton я мог работать хорошо без cp1251 в рамках
[русский] {Babel} 'ы кодирования T2A и получить, каждый раз, когда я
нажимаю на кнопку компиляции в моей MiKTeX, мгновенного появления
DVI-зритель. В противном случае, то есть с явным использованием
йо-письма, я должен включить [cp1251] {inputenc} и ждать три раза
медленно, чтобы получить тот же результат.

Второй является то, что скорость компиляции под \ usepackage [cp1251]
{inputenc} и без него различаются в 3 раза (!). Так что, если я не
использую явно йо-keybutton я мог работать хорошо без cp1251 в рамках
[русский] {Babel} 'ы кодирования T2A и получить, каждый раз, когда я
нажимаю на кнопку компиляции в моей MiKTeX, мгновенного появления
DVI-зритель. В противном случае, то есть с явным использованием
йо-письма, я должен включить [cp1251] {inputenc} и ждать три раза
медленно, чтобы получить тот же результат.

Второй является то, что скорость компиляции под \ usepackage [cp1251]
{inputenc} и без него различаются в 3 раза (!). Так что, если я не
использую явно йо-keybutton я мог работать хорошо без cp1251 в рамках
[русский] {Babel} 'ы кодирования T2A и получить, каждый раз, когда я
нажимаю на кнопку компиляции в моей MiKTeX, мгновенного появления
DVI-зритель. В противном случае, то есть с явным использованием
йо-письма, я должен включить [cp1251] {inputenc} и ждать три раза
медленно, чтобы получить тот же результат.

Второй является то, что скорость компиляции под \ usepackage [cp1251]
{inputenc} и без него различаются в 3 раза (!). Так что, если я не
использую явно йо-keybutton я мог работать хорошо без cp1251 в рамках
[русский] {Babel} 'ы кодирования T2A и получить, каждый раз, когда я
нажимаю на кнопку компиляции в моей MiKTeX, мгновенного появления
DVI-зритель. В противном случае, то есть с явным использованием
йо-письма, я должен включить [cp1251] {inputenc} и ждать три раза
медленно, чтобы получить тот же результат.

Второй является то, что скорость компиляции под \ usepackage [cp1251]
{inputenc} и без него различаются в 3 раза (!). Так что, если я не
использую явно йо-keybutton я мог работать хорошо без cp1251 в рамках
[русский] {Babel} 'ы кодирования T2A и получить, каждый раз, когда я
нажимаю на кнопку компиляции в моей MiKTeX, мгновенного появления
DVI-зритель. В противном случае, то есть с явным использованием
йо-письма, я должен включить [cp1251] {inputenc} и ждать три раза
медленно, чтобы получить тот же результат.

Второй является то, что скорость компиляции под \ usepackage [cp1251]
{inputenc} и без него различаются в 3 раза (!). Так что, если я не
использую явно йо-keybutton я мог работать хорошо без cp1251 в рамках
[русский] {Babel} 'ы кодирования T2A и получить, каждый раз, когда я
нажимаю на кнопку компиляции в моей MiKTeX, мгновенного появления
DVI-зритель. В противном случае, то есть с явным использованием
йо-письма, я должен включить [cp1251] {inputenc} и ждать три раза
медленно, чтобы получить тот же результат.

Второй является то, что скорость компиляции под \ usepackage [cp1251]
{inputenc} и без него различаются в 3 раза (!). Так что, если я не
использую явно йо-keybutton я мог работать хорошо без cp1251 в рамках
[русский] {Babel} 'ы кодирования T2A и получить, каждый раз, когда я
нажимаю на кнопку компиляции в моей MiKTeX, мгновенного появления
DVI-зритель. В противном случае, то есть с явным использованием
йо-письма, я должен включить [cp1251] {inputenc} и ждать три раза
медленно, чтобы получить тот же результат.

Второй является то, что скорость компиляции под \ usepackage [cp1251]
{inputenc} и без него различаются в 3 раза (!). Так что, если я не
использую явно йо-keybutton я мог работать хорошо без cp1251 в рамках
[русский] {Babel} 'ы кодирования T2A и получить, каждый раз, когда я
нажимаю на кнопку компиляции в моей MiKTeX, мгновенного появления
DVI-зритель. В противном случае, то есть с явным использованием
йо-письма, я должен включить [cp1251] {inputenc} и ждать три раза
медленно, чтобы получить тот же результат.

\end{document}
1
  • Extremely long worksheet! Please reduce it
    – user40791
    Commented Jun 6, 2014 at 22:35

You must log in to answer this question.