Skip to content
This repository has been archived by the owner on May 25, 2021. It is now read-only.

Commit

Permalink
Merge pull request #60 from KrzysiekJ/benchmarks
Browse files Browse the repository at this point in the history
Vector shrinking is inefficient
  • Loading branch information
Tuncer Ayaz committed Feb 7, 2018
2 parents 9dc3d83 + 582d01b commit 30ff093
Showing 1 changed file with 57 additions and 0 deletions.
57 changes: 57 additions & 0 deletions test/triq_bench_tests.erl
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
%% Copyright (c) 2018 Krzysztof Jurewicz
%%
%% Licensed under the Apache License, Version 2.0 (the "License");
%% you may not use this file except in compliance with the License.
%% You may obtain a copy of the License at
%%
%% http://www.apache.org/licenses/LICENSE-2.0
%%
%% Unless required by applicable law or agreed to in writing, software
%% distributed under the License is distributed on an "AS IS" BASIS,
%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
%% See the License for the specific language governing permissions and
%% limitations under the License.

-module(triq_bench_tests).

-include_lib("triq/include/triq.hrl").
-include_lib("eunit/include/eunit.hrl").

-define(
LET_PROF(Prof, FunCall, Assertions),
begin
_ = cprof:start(),
_ = FunCall,
_ = cprof:pause(),
Prof = cprof:analyse(),
_ = cprof:stop(),
Assertions
end).

-spec call_count(
mfa(),
{integer(),
list(
{Mod :: atom(),
ModCallCount :: integer(),
[{mfa(), integer()}]})})
-> integer().
%% @doc Extract call count for a specific MFA from CProf results.
call_count({Mod, _, _}=MFA, {_, ResultsPerMod}) ->
{_, _, ModResults} = lists:keyfind(Mod, 1, ResultsPerMod),
proplists:get_value(MFA, ModResults, 0).

%% When looking for optimization opportunities in Triq, one can try to tighten
%% assertions in the tests below.

constant_singleton_vector_test() ->
?LET_PROF(
Prof,
triq:counterexample(
?FORALL(
_,
vector(1, return(foo)),
false)),
?assertMatch(
C when C =< 25000, call_count(
{triq_dom, shrink_list_members, 4}, Prof))).

0 comments on commit 30ff093

Please sign in to comment.