aboutsummaryrefslogtreecommitdiffhomepage
path: root/doc
diff options
context:
space:
mode:
authorGravatar Nicolas Noble <nicolasnoble@users.noreply.github.com>2018-08-08 05:57:31 -0700
committerGravatar GitHub <noreply@github.com>2018-08-08 05:57:31 -0700
commit310a5b9dcd0cd38d4f463e799343dc941fde7b1a (patch)
tree721acb672145db4691658b808cde94ef06096b60 /doc
parente916e79cb88b007559e079a8cac2250105a76954 (diff)
Create ssl-performance.md
First draft
Diffstat (limited to 'doc')
-rw-r--r--doc/ssl-performance.md30
1 files changed, 30 insertions, 0 deletions
diff --git a/doc/ssl-performance.md b/doc/ssl-performance.md
new file mode 100644
index 0000000000..5af7afdfe4
--- /dev/null
+++ b/doc/ssl-performance.md
@@ -0,0 +1,30 @@
+# SSL in gRPC and performance
+
+The SSL requirement of gRPC isn't necessarily making it easy to integrate. The HTTP/2 protocol requires ALPN support, which is a fairly new handshake protocol only supported by recent implementations.
+
+As a result, we've tried hard to provide a smooth experience to our users when compiling and distributing gRPC, but this may come at performance costs due to this. More specifically, we will sometime build the SSL library by disabling assembly code, which can impact performances by an order of magnitude when processing encrypted streams.
+
+Build system | Condition | Platform | Assembly code
+---|---|---|--
+Makefile | with OpenSSL 1.0.2 development files | all | :heavy_check_mark:
+Makefile | all other cases | all | :x:
+Bazel | | Linux | :heavy_check_mark:
+Bazel | | MacOS | :heavy_check_mark:
+Bazel | | Windows | :x:
+CMake | | Windows | :x:
+CMake | | all others | :heavy_check_mark:
+
+
+In addition, we are shipping packages for language implementations. These packages are source packages, but also have pre-built binaries being distributed. Building packages from source may give a different result in some cases.
+
+Language | From source | Platform | Assembly code
+---|---|---|---
+Node.JS | n/a | Linux | :heavy_check_mark:
+Node.JS | n/a | MacOS | :heavy_check_mark:
+Node.JS | n/a | Windows | :x:
+Electron | n/a | all | :heavy_check_mark:
+Ruby | Yes | all | Same as the `Makefile` case from above
+Ruby | No | all | :x:
+PHP | Yes | all | Same as the `Makefile` case from above
+PHP | No | all | :x:
+Python | n/a | all | :x: