2018/07/29
Perforce の改行コード変換
Perforce は Workspace 毎に改行コードの変換ルールを設定することができます。設定は下記の 5種類です。
git のような変換無しのモードは特に無く、text の場合は OS (改行コード) 毎に変換が行われているようです。サーバー上の改行コードは LF で統一されています。
"Local" は OS 依存で "Unix", "Mac", "Win" の何れかと同じ意味になります。"Mac" は OSX より古い OS 用のもので、現在の OSX/macOS は "Unix" に含まれます。
実際にどのように変換されるか調べてみました。下記はテキストファイルを Perforce サーバー経由で取得し直した結果です。
"Unix" は改行コードを LF に統一しているわけではなく、単に何もしていないだけであることがわかります。
各モードの変換の動作をまとめると下記のとおりです。
Perforce の変換モードと git との比較
Perforce ではサーバー上の改行コードは LF で統一されており、CRLF のファイルが存在することを想定していないようです。"Unix" は事実上無変換モードなので、CRLF の text ファイルもそのまま Uploard することができてしまいます。"Win" 設定で受け取ると余計な CR が挿入されてしまいます。
変換 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 が挿入されてしまいます。
2018/05/30
アンチウイルスソフトとビルド時間の関係
先日各種モバイルデバイスから Desktop PC までビルド時間の比較を行いました。
・前回の記事はこちら: 「 ARM CPU 上の開発環境とコンパイル時間の比較 」
最初測定したときは 8 core 16 thread の Ryzen 7 1800X でビルドが 60秒かかっていました。何度試しても変わりません。3年前のスマートフォン Galaxy S6 edge が 77.8秒なので、おかしいと調べたところアンチウィルスソフトが原因であることがわかりました。uninstall した状態では 22秒まで短縮しています。2.7倍も高速になりました。
uninstall しても Windows 10 では Windows Defender, Windows Firewall が有効になるため、決して無防備になるわけではありません。
実は前に仕事でも全く同じような問題がありました。ビルド時間があまりに長いために、独自にビルドシステムを作って並列度を上げたり、キャッシュ化や分散ビルドシステムを開発したりと様々な試みを行ったことがあります。あとから、アンチウィルスソフト (上記とは別のソフト) を無効化しただけで 2倍前後ビルド時間が短縮することが分かりました。
2.7倍差は大きいので、CPU の core 数を増やすよりも効果あるかもしれません。
関連エントリ
・ARM CPU 上の開発環境とコンパイル時間の比較
・AMD CPU Ryzen とコンパイル時間の比較 (2)
・AMD CPU Ryzen とコンパイル時間の比較
・前回の記事はこちら: 「 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 とコンパイル時間の比較
|