Почему это «бесполезное использование кота» с `detex `в 10 раз быстрее, чем альтернатива?

Шаг 1 :Создайте новый MIME-тип

В ~/.local/share/mime/packages/создайте файл text-fig.pickle.xmlс содержимым:

<?xml version="1.0"?>
<mime-info xmlns='http://www.freedesktop.org/standards/shared-mime-info'>
  <mime-type type="text/fig.pickle">
    <comment>my new mime type</comment>
    <glob pattern="*.fig.pickle"/>
  </mime-type>
</mime-info>

Имея этот xml-файл, обновите базу данных MIME-типов:

update-mime-database ~/.local/share/mime

Если в вашей системе установлена ​​команда mimetype, вы можете выполнить быструю проверку:

touch test.fig.pickle
mimetype test.fig.pickle
  test.fig.pickle: text/fig.pickle

Шаг 2 :Создайте файл .desktopдля вашего приложения

В ~/.local/share/applications/создайте файл view_fig_pickle.desktopс содержимым:

[Desktop Entry]
Exec=view_fig_pickle.py %F
Icon=view_fig_pickle.png
Name=View Fig Pickle
Terminal=false
Type=Application

где

  • Execваше приложение, которое является исполняемым и находится на вашем пути
  • Icon— это значок в ~/.icons(, вы можете сохранить эту запись, даже если значок не существует)
  • Name— это текст, отображаемый в контекстном меню вашего файлового менеджера

Шаг 3 :Свяжите свое приложение с новым типом mime

xdg-mime default view_fig_pickle.desktop text/fig.pickle

Подтвердить:

xdg-mime query default text/fig.pickle
  view_fig_pickle.desktop

и

xdg-open test.fig.pickle

Это должно открыть test.fig.pickleв view_fig_pickle.py, также если вы щелкнете файл в своем файловом браузере.

Тем не менее, вам может потребоваться создать ассоциацию также в вашем файловом менеджере (щелкните правой кнопкой мыши -файл, выберите Open with...и выберите View Fig Pickleв подменю Other).

Чтобы отменить эту модификацию:

Шаг 1 :Удалить MIME-тип

rm ~/.local/share/mime/packages/text-fig.pickle.xml
update-mime-database ~/.local/share/mime

Шаг 2 :Удалить связь

отредактируйте ~/.local/share/applications/mimeapps.listи удалите строку сtext/fig.pickle=view_fig_pickle.desktop

Шаг 3 :Удалите устаревший .desktopфайл

rm.local/share/applications/view_fig_pickle.desktop
4
15.03.2021, 00:48
2 ответа

Первоначальные результаты кажутся просто несоответствиями.

Установлена ​​последняя версия detexот Homebrew:

$ detex -v

OpenDetex version 2.8.9
https://github.com/pkubowicz/opendetex

Получен пример файла LaTeX:

$ curl https://raw.githubusercontent.com/latex3/latex3/main/articles/2011-current-state.tex > file.tex

Сделано 100 копий файла:

$ for i in {1..100}; do cp file.tex "file${i}.tex"; done

Запустил версию cat5 раз:

$ for i in {1..5}; do time cat *tex | detex | wc -w; done
   78174

real    0m0.024s
user    0m0.025s
sys 0m0.012s
   78174

real    0m0.021s
user    0m0.023s
sys 0m0.009s
   78174

real    0m0.019s
user    0m0.020s
sys 0m0.008s
   78174

real    0m0.019s
user    0m0.019s
sys 0m0.008s
   78174

real    0m0.017s
user    0m0.018s
sys 0m0.008s

Прогонял не-catверсию 5 раз:

$ for i in {1..5}; do time detex *tex | wc -w; done
   78174

real    0m0.027s
user    0m0.023s
sys 0m0.009s
   78174

real    0m0.024s
user    0m0.021s
sys 0m0.007s
   78174

real    0m0.021s
user    0m0.020s
sys 0m0.005s
   78174

real    0m0.019s
user    0m0.017s
sys 0m0.005s
   78174

real    0m0.018s
user    0m0.016s
sys 0m0.005s
0
18.03.2021, 22:25

Согласно справочной странице time , я думаю, что в:

$ time cat *tex | detex | wc -w

на самом деле вы измеряете время выполнения команды cat, что может объяснить разницу в скорости.

0
27.10.2021, 14:01

Теги

Похожие вопросы