Skip to content

Commit 0e09804

Browse files
committed
chore: lean --stats gives number of imported bytes
1 parent 0002ea8 commit 0e09804

File tree

5 files changed

+15
-2
lines changed

5 files changed

+15
-2
lines changed

src/Lean/Environment.lean

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,10 @@ def CompactedRegion := USize
103103
@[extern "lean_compacted_region_is_memory_mapped"]
104104
opaque CompactedRegion.isMemoryMapped : CompactedRegion → Bool
105105

106+
/-- Size in bytes. -/
107+
@[extern "lean_compacted_region_size"]
108+
opaque CompactedRegion.size : CompactedRegion → USize
109+
106110
/-- Free a compacted region and its contents. No live references to the contents may exist at the time of invocation. -/
107111
@[extern "lean_compacted_region_free"]
108112
unsafe opaque CompactedRegion.free : CompactedRegion → IO Unit
@@ -2178,6 +2182,7 @@ def displayStats (env : Environment) : IO Unit := do
21782182
IO.println ("direct imports: " ++ toString env.header.imports);
21792183
IO.println ("number of imported modules: " ++ toString env.header.regions.size);
21802184
IO.println ("number of memory-mapped modules: " ++ toString (env.header.regions.filter (·.isMemoryMapped) |>.size));
2185+
IO.println ("number of imported bytes: " ++ toString (env.header.regions.map (·.size) |>.sum));
21812186
IO.println ("number of imported consts: " ++ toString env.constants.map₁.size);
21822187
IO.println ("number of buckets for imported consts: " ++ toString env.constants.numBuckets);
21832188
IO.println ("trust level: " ++ toString env.header.trustLevel);

src/runtime/compact.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -379,6 +379,7 @@ void object_compactor::operator()(object * o) {
379379
}
380380

381381
compacted_region::compacted_region(size_t sz, void * data, void * base_addr, bool is_mmap, std::function<void()> free_data):
382+
m_size(sz),
382383
m_base_addr(base_addr),
383384
m_is_mmap(is_mmap),
384385
m_free_data(free_data),
@@ -502,6 +503,10 @@ extern "C" LEAN_EXPORT uint8 lean_compacted_region_is_memory_mapped(usize region
502503
return reinterpret_cast<compacted_region *>(region)->is_memory_mapped();
503504
}
504505

506+
extern "C" LEAN_EXPORT usize lean_compacted_region_size(usize region) {
507+
return reinterpret_cast<compacted_region *>(region)->size();
508+
}
509+
505510
extern "C" LEAN_EXPORT obj_res lean_compacted_region_free(usize region, object *) {
506511
delete reinterpret_cast<compacted_region *>(region);
507512
return lean_io_result_mk_ok(lean_box(0));

src/runtime/compact.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ class LEAN_EXPORT object_compactor {
5757
};
5858

5959
class LEAN_EXPORT compacted_region {
60+
size_t m_size;
6061
// see `object_compactor::m_base_addr`
6162
void * m_base_addr;
6263
bool m_is_mmap;
@@ -88,5 +89,6 @@ class LEAN_EXPORT compacted_region {
8889
compacted_region operator=(compacted_region &&) = delete;
8990
object * read();
9091
bool is_memory_mapped() const { return m_is_mmap; }
92+
size_t size() const { return m_size; }
9193
};
9294
}

tests/bench/accumulate_profile.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@
66

77
cats = collections.defaultdict(lambda: 0)
88
for line in sys.stdin:
9-
if m := re.match("(.+?) ([\d.]+)(m?)s", line):
9+
if m := re.match(r"(.+?) ([\d.]+)(m?)s", line) or \
10+
re.match(r"\s*(number of imported bytes:|number of imported consts:|number of imported entries:)\s+(\d+)()", line):
1011
cats[m[1].strip()] += float(m[2]) * (1e-3 if m[3] else 1)
1112
sys.stderr.write(line)
1213

tests/bench/speedcenter.exec.velcom.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
run_config:
1919
<<: *time
2020
cmd: |
21-
bash -c 'set -eo pipefail; touch ../../src/Init/Prelude.lean; make LEAN_OPTS="-Dprofiler=true -Dprofiler.threshold=9999" -C ${BUILD:-../../build/release}/stage2 --output-sync -j$(nproc) 2>&1 | ./accumulate_profile.py'
21+
bash -c 'set -eo pipefail; touch ../../src/Init/Prelude.lean; make LEAN_OPTS="-Dprofiler=true -Dprofiler.threshold=99999 --stats" -C ${BUILD:-../../build/release}/stage2 --output-sync -j$(nproc) 2>&1 | ./accumulate_profile.py'
2222
max_runs: 2
2323
parse_output: true
2424
# initialize stage2 cmake + warmup

0 commit comments

Comments
 (0)