pdfLaTex.exe <arquivo>Levou-me a uma investigação a respeito. Dentre outras ações tomadas, a que mais teve impacto no tempo de execução foi a junção de vários arquivos de imagens, separadas por capítulo e subcapítulo, em uma única divisão por capítulo apenas.
Antes
\fig\capitulo01\ \fig\capitulo02\ \fig\capitulo03\experimento01\ \fig\capitulo03\experimento02\ \fig\capitulo04\ \fig\capitulo04\caso01\ \fig\capitulo04\extra\
Depois
\fig\capitulo01\ \fig\capitulo02\ \fig\capitulo03\ \fig\capitulo04\
Ao fazer o ajuste citado, foi possível observar uma melhora sensível no tempo de compilação, que reduziu cerca de 75% do tempo original.
Em arquivos com um número menor de imagens, é suficiente manter todos na pasta
\fig\
Como testar os tempos de compilação?
Uma das formas utilizado foi colocar os dois conjuntos de arquivos a serem compilados em pastas diferentes e utilizar um arquivo em lote tipo bath.
REM Este arquivo bath compila o LaTeX dentro da pasta especificada cd <pasta_tipo01> pdflatex.exe -synctex=1 --enable-write18 -interaction=nonstopmode <nome_do_arquivo>.tex cd ..
O outro arquivo bath só altera a linha
cd <pasta_tipo02>
Pronto, agora no Python, basta fazer um looping para examinar o tempo de compilação de cada um dos tipo e tirar a média.
Pode ocorrer da primeira compilação apresentar um tempo elevado, devido a geração dos indices e outros arquivos auxiliares, bem como devido a outro processo em paralelo na máquina, no entanto, na média geral é possível saber o ganho desta simplificação das pastas.
import os import time import numpy as np arrTempos = []Nos meus teste, em um arquivo LaTeX de alguns capítulos e saída PDF de cerca de 5MB em ~150 páginas, a média dos tempos para 10 rodadas foramfor i in range(10): #optou-se por 10 ciclos para tirar a média # (1) CMD /K – execute a command and then remain: # (2) CMD /C – execute a command and then terminate: t = time.time() os.system('cmd /c <bath_01>.bat') #com as pastas juntas elapsed01 = time.time() - t os.system('cmd /c <bath_02>.bat') #com as pastas separadas elapsed02 = time.time() - t arrTempos.append([elapsed01,elapsed02]) print(np.mean(arrTempos, axis=0))
[ 88.78563097 244.51468055]
Em outra palavras, o tempo de compilação para pastas_juntas foram cerca de 1/3 em relação ao outro método.
Os tempos parciais para pastas_juntas e pastas_separadas foram
[78.91398334503174, 228.06645393371582] [83.48539805412292, 255.4984953403473] [94.20977091789246, 269.09853291511536] [93.2732846736908, 263.52228140830994] [80.58168148994446, 214.4084243774414] [95.5419991016388, 264.4155135154724] [83.58538913726807, 242.64917302131653] [103.91669821739197, 273.17346358299255] [99.13573002815247, 228.97257685661316] [75.21237468719482, 205.3418905735016]