Do not store binary data inside php files (#13911)

Follow up on #10404, the initial description:

> For the sake of performance, the hex2bin call was removed from the generated PHP code in https://github.com/protocolbuffers/protobuf/pull/8006
However, after this PR all autogenerated files contain binary data, which makes it hard or even impossible to see using common tools (git and github included (i.e. [this file](https://github.com/protocolbuffers/protobuf/blob/main/php/src/GPBMetadata/Google/Protobuf/Struct.php)), as well as some code editors) since most software considers such files as binary ones and not as code.

Alexander suggested using a hex representation of string literals and I updated the original patch a bit, not hex-encoding printable characters.

Benchmarks from [#10404#issuecomment-1635939062](https://github.com/protocolbuffers/protobuf/pull/10404#issuecomment-1635939062)
```
The percent of printable chars: 0.83869 (80112 vs 15408)
hex parsing: 3.22371, length=382090
hex2Bin parsing: 1.18489, length=191059
hexAscii parsing: 0.89524, length=142306 (suggested option)
binary parsing: 0.26437, length=95542
```

Closes #13911

COPYBARA_INTEGRATE_REVIEW=https://github.com/protocolbuffers/protobuf/pull/13911 from mikhainin:do_not_store_binary_data_inside_php_files 490958e165
PiperOrigin-RevId: 601123255
pull/15559/head
Mikhail Galanin 10 months ago committed by Copybara-Service
parent 6f86726f26
commit e6aa58004e
  1. 815
      src/google/protobuf/compiler/php/php_generator.cc

File diff suppressed because it is too large Load Diff
Loading…
Cancel
Save