BuildSystem/開発環境」カテゴリーアーカイブ

Perforce の改行コード変換

Perforce は Workspace 毎に改行コードの変換ルールを設定することができます。設定は下記の 5種類です。

変換 Mode 改行 code
Local OS 依存
Unix LF OSX/macOS 含む
Mac CR Mac OS 9 以前
Win CR+LF Windows
Shared LF

git のような変換無しのモードは特に無く、text の場合は OS (改行コード) 毎に変換が行われているようです。サーバー上の改行コードは LF で統一されています。

“Local” は OS 依存で “Unix”, “Mac”, “Win” の何れかと同じ意味になります。”Mac” は OSX より古い OS 用のもので、現在の OSX/macOS は “Unix” に含まれます。

実際にどのように変換されるか調べてみました。下記はテキストファイルを Perforce サーバー経由で取得し直した結果です。

Mode        Local PC      Server(p4d)    Local PC
--------------------------------------------------
Unix        CRLF     ->   CRLF     ->    CRLF
Win         CRLF     ->   LF       ->    CRLF
Shared      CRLF     ->   LF       ->    LF

Unix        LF       ->   LF       ->    LF
Win         LF       ->   LF       ->    CRLF
Shared      LF       ->   LF       ->    LF

Unix                      CRLF     ->    CRLF
Win                       CRLF     ->    CRCRLF
Shared                    CRLF     ->    CRLF

“Unix” は改行コードを LF に統一しているわけではなく、単に何もしていないだけであることがわかります。

各モードの変換の動作をまとめると下記のとおりです。

変換 Mode PC → Server Server → PC
Win 変換あり CRLF → LF 変換あり LF → CRLF
Unix 変換無し 変換無し
Shared 変換あり CRLF → LF 変換無し

Perforce の変換モードと git との比較

Perforce の変換 Mode 対応する git の設定
Win autocrlf=true
Unix autocrlf=false
Shared autocrlf=input

Perforce ではサーバー上の改行コードは LF で統一されており、CRLF のファイルが存在することを想定していないようです。”Unix” は事実上無変換モードなので、CRLF の text ファイルもそのまま Uploard することができてしまいます。”Win” 設定で受け取ると余計な CR が挿入されてしまいます。

アンチウイルスソフトとビルド時間の関係

先日各種モバイルデバイスから Desktop PC までビルド時間の比較を行いました。

前回の記事はこちら: 「 ARM CPU 上の開発環境とコンパイル時間の比較 」

最初測定したときは 8 core 16 thread の Ryzen 7 1800X でビルドが 60秒かかっていました。何度試しても変わりません。3年前のスマートフォン Galaxy S6 edge が 77.8秒なので、おかしいと調べたところアンチウィルスソフトが原因であることがわかりました。uninstall した状態では 22秒まで短縮しています。2.7倍も高速になりました。

Ryzen 7 1800X Windows 10 x64 ビルド時間
追加アンチウィルスソフトあり 60.0 秒
Windows Defender 22.2 秒

uninstall しても Windows 10 では Windows Defender, Windows Firewall が有効になるため、決して無防備になるわけではありません。

実は前に仕事でも全く同じような問題がありました。ビルド時間があまりに長いために、独自にビルドシステムを作って並列度を上げたり、キャッシュ化や分散ビルドシステムを開発したりと様々な試みを行ったことがあります。あとから、アンチウィルスソフト (上記とは別のソフト) を無効化しただけで 2倍前後ビルド時間が短縮することが分かりました。

2.7倍差は大きいので、CPU の core 数を増やすよりも効果あるかもしれません。

関連エントリ
ARM CPU 上の開発環境とコンパイル時間の比較
AMD CPU Ryzen とコンパイル時間の比較 (2)
AMD CPU Ryzen とコンパイル時間の比較