1+ using System ;
2+ using System . Runtime . InteropServices ;
3+
4+ namespace LLama . Native ;
5+
6+ /// <summary>
7+ /// LLama performance information
8+ /// </summary>
9+ [ StructLayout ( LayoutKind . Sequential ) ]
10+ public struct LLamaTimings
11+ {
12+ /// <summary>
13+ /// Timestamp when reset was last called
14+ /// </summary>
15+ private double t_start_ms ;
16+
17+ /// <summary>
18+ /// Timestamp when these timings were read
19+ /// </summary>
20+ private double t_end_ms ;
21+
22+ /// <summary>
23+ /// Loading milliseconds
24+ /// </summary>
25+ private double t_load_ms ;
26+
27+ /// <summary>
28+ /// Total sampling milliseconds
29+ /// </summary>
30+ private double t_sample_ms ;
31+
32+ /// <summary>
33+ /// total milliseconds spent prompt processing
34+ /// </summary>
35+ private double t_p_eval_ms ;
36+
37+ /// <summary>
38+ /// Total milliseconds in eval/decode calls
39+ /// </summary>
40+ private double t_eval_ms ;
41+
42+ /// <summary>
43+ /// number of tokens sampled
44+ /// </summary>
45+ private int n_sample ;
46+
47+ /// <summary>
48+ /// number of tokens in eval calls for the prompt (with batch size > 1)
49+ /// </summary>
50+ private int n_p_eval ;
51+
52+ /// <summary>
53+ /// number of eval calls
54+ /// </summary>
55+ private int n_eval ;
56+
57+
58+
59+
60+ /// <summary>
61+ /// Timestamp when reset was last called
62+ /// </summary>
63+ public readonly TimeSpan ResetTimestamp => TimeSpan . FromMilliseconds ( t_start_ms ) ;
64+
65+ /// <summary>
66+ /// Timestamp when these timings were read
67+ /// </summary>
68+ public readonly TimeSpan ReadTimestamp => TimeSpan . FromMilliseconds ( t_start_ms ) ;
69+
70+ /// <summary>
71+ /// Time spent loading
72+ /// </summary>
73+ public readonly TimeSpan Loading => TimeSpan . FromMilliseconds ( t_load_ms ) ;
74+
75+ /// <summary>
76+ /// Time spent sampling
77+ /// </summary>
78+ public readonly TimeSpan Sampling => TimeSpan . FromMilliseconds ( t_load_ms ) ;
79+
80+ /// <summary>
81+ /// total milliseconds spent prompt processing
82+ /// </summary>
83+ public TimeSpan PromptEval => TimeSpan . FromMilliseconds ( t_p_eval_ms ) ;
84+
85+ /// <summary>
86+ /// Total milliseconds in eval/decode calls
87+ /// </summary>
88+ public readonly TimeSpan Eval => TimeSpan . FromMilliseconds ( t_eval_ms ) ;
89+
90+ /// <summary>
91+ /// Total number of tokens sampled
92+ /// </summary>
93+ public readonly int TokensSampled => n_sample ;
94+
95+ /// <summary>
96+ /// number of tokens in eval calls for the prompt (with batch size > 1)
97+ /// </summary>
98+ public readonly int PrompTokensEvaluated => n_p_eval ;
99+
100+ /// <summary>
101+ /// number of eval calls
102+ /// </summary>
103+ public readonly int TokensEvaluated => n_p_eval ;
104+ }
0 commit comments