[cost] Add new experimental cost kind

Reviewed By: ngorogiannis

Differential Revision: D23502703

fbshipit-source-id: f27353c7e
master
Sungkeun Cho 4 years ago committed by Facebook GitHub Bot
parent dab523f7eb
commit 65dd303415

@ -7,20 +7,35 @@
open! IStd open! IStd
module F = Format module F = Format
type t = OperationCost | AllocationCost [@@deriving compare] type t = OperationCost | AllocationCost | AutoreleasepoolSize [@@deriving compare]
let to_issue_string = function
| OperationCost ->
"EXECUTION_TIME"
| AllocationCost ->
"ALLOCATION"
| AutoreleasepoolSize ->
"AUTORELEASEPOOL_SIZE"
let to_issue_string = function OperationCost -> "EXECUTION_TIME" | AllocationCost -> "ALLOCATION"
let to_complexity_string = function let to_complexity_string = function
| AllocationCost -> | AllocationCost ->
"Allocation complexity" "Allocation complexity"
| AutoreleasepoolSize ->
"Autoreleasepool size"
| OperationCost -> | OperationCost ->
"Time complexity" "Time complexity"
let pp f k = let pp f k =
let k_str = let k_str =
match k with OperationCost -> "Execution Cost" | AllocationCost -> "Allocation Cost" match k with
| OperationCost ->
"Execution Cost"
| AllocationCost ->
"Allocation Cost"
| AutoreleasepoolSize ->
"Autoreleasepool Size"
in in
F.pp_print_string f k_str F.pp_print_string f k_str
@ -30,6 +45,8 @@ let to_json_cost_info c = function
c.Jsonbug_t.exec_cost c.Jsonbug_t.exec_cost
| AllocationCost -> | AllocationCost ->
assert false assert false
| AutoreleasepoolSize ->
assert false
type kind_spec = {kind: t; (* for non-diff analysis *) top_and_unreachable: bool} type kind_spec = {kind: t; (* for non-diff analysis *) top_and_unreachable: bool}

@ -7,7 +7,7 @@
open! IStd open! IStd
type t = OperationCost | AllocationCost [@@deriving compare] type t = OperationCost | AllocationCost | AutoreleasepoolSize [@@deriving compare]
type kind_spec = {kind: t; (* for non-diff analysis *) top_and_unreachable: bool} type kind_spec = {kind: t; (* for non-diff analysis *) top_and_unreachable: bool}

@ -65,7 +65,7 @@ val get_operation_cost : t -> BasicCostWithReason.t
val map : f:(BasicCostWithReason.t -> BasicCostWithReason.t) -> t -> t val map : f:(BasicCostWithReason.t -> BasicCostWithReason.t) -> t -> t
val zero_record : t val zero_record : t
(** Map representing cost record \{OperationCost:0; AllocationCost:0\} *) (** Map representing cost record \{OperationCost:0; AllocationCost:0; AutoreleasepoolSize:0\} *)
val mult_by : t -> nb_exec:BasicCost.t -> t val mult_by : t -> nb_exec:BasicCost.t -> t
(** Special map where each element is multiplied by the number of executions *) (** Special map where each element is multiplied by the number of executions *)
@ -74,10 +74,11 @@ val plus : t -> t -> t
(** Union of two maps where common costs are added together *) (** Union of two maps where common costs are added together *)
val unit_cost_atomic_operation : t val unit_cost_atomic_operation : t
(** Map representing cost record \{OperationCost:1; AllocationCost:0\} *) (** Map representing cost record \{OperationCost:1; AllocationCost:0; AutoreleasepoolSize:0\} *)
val unit_cost_allocation : t val unit_cost_allocation : t
(** Map representing cost record \{OperationCost:0; AllocationCost:1\} *) (** Map representing cost record \{OperationCost:0; AllocationCost:1; AutoreleasepoolSize:0\} *)
val of_operation_cost : BasicCost.t -> t val of_operation_cost : BasicCost.t -> t
(** Map representing cost record \{OperationCost:operation_cost; AllocationCost:0\} *) (** Map representing cost record \{OperationCost:operation_cost; AllocationCost:0;
AutoreleasepoolSize:0\} *)

Loading…
Cancel
Save