aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAnders Svensson <[email protected]>2017-04-16 09:51:34 +0200
committerAnders Svensson <[email protected]>2017-06-12 16:13:52 +0200
commitf2e75976772b6a1d52a2c71ec1eecb4b338ed632 (patch)
treecb2fc7594cd6f2d12d3b673a2c3db476212f0fd8
parent0911c97768caeb908c3f18fd1ba514c1c7f273d5 (diff)
downloadotp-f2e75976772b6a1d52a2c71ec1eecb4b338ed632.tar.gz
otp-f2e75976772b6a1d52a2c71ec1eecb4b338ed632.tar.bz2
otp-f2e75976772b6a1d52a2c71ec1eecb4b338ed632.zip
Replace slow binary comprehensions
Which appears to be about an order of magnitude slower than just creating a binary of the desired size.
-rw-r--r--lib/diameter/include/diameter_gen.hrl3
-rw-r--r--lib/diameter/test/diameter_codec_test.erl5
2 files changed, 5 insertions, 3 deletions
diff --git a/lib/diameter/include/diameter_gen.hrl b/lib/diameter/include/diameter_gen.hrl
index 09af829259..f8d6cbde89 100644
--- a/lib/diameter/include/diameter_gen.hrl
+++ b/lib/diameter/include/diameter_gen.hrl
@@ -723,7 +723,8 @@ z('AVP') ->
<<0:64/integer>>; %% minimal header
z(Name) ->
Bin = diameter_codec:pack_avp(avp_header(Name), empty_value(Name)),
- << <<0>> || <<_>> <= Bin >>.
+ Sz = size(Bin),
+ <<0:Sz/unit:8>>.
%% ---------------------------------------------------------------------------
%% # empty/1
diff --git a/lib/diameter/test/diameter_codec_test.erl b/lib/diameter/test/diameter_codec_test.erl
index 869797f11f..d8b7377c0c 100644
--- a/lib/diameter/test/diameter_codec_test.erl
+++ b/lib/diameter/test/diameter_codec_test.erl
@@ -1,7 +1,7 @@
%%
%% %CopyrightBegin%
%%
-%% Copyright Ericsson AB 2010-2016. All Rights Reserved.
+%% Copyright Ericsson AB 2010-2017. All Rights Reserved.
%%
%% Licensed under the Apache License, Version 2.0 (the "License");
%% you may not use this file except in compliance with the License.
@@ -280,7 +280,8 @@ d(F, Eq, V) ->
end.
z(B) ->
- << <<0>> || <<_>> <= B >>.
+ Sz = size(B),
+ <<0:Sz/unit:8>>.
%% values/1
%%