Differences From:
File
tools/cvs2fossil/lib/c2f_prev.tcl
part of check-in
[f46458d5bd]
- Reworked the basic structure of pass InitCSets to keep memory consumption down. Now incremental creates, breaks, saves, and releases changesets, instead of piling them on before saving all at the end. Memory tracking confirms that this changes the accumulating mountain into a near-constant usage, with the expected spikes from the breaking.
by
aku on
2008-02-17 02:06:19.
[view]
To:
File
tools/cvs2fossil/lib/c2f_prev.tcl
part of check-in
[faf57d7462]
- Modified the changeset class to move handling of the changeset lists to fully after their creation and storage. This is item (3) in cvsfossil.txt. The results do not satisfy however. During the creation of each changeset memory usage is (fractonally) lower, however at the end, after all changesets haven been loaded memory usage is consistently higher. The reason for that is not known. I am saving this for possible future evolution and usage, but will not pursue this further right now. The gains seem to be too small compared to the overall loss. InitializeBreakstate is likely a better target, despite its complexity.
by
aku on
2008-02-20 06:03:48.
[view]
@@ -51,16 +51,30 @@
set mypos {} ; # Commit location is not known yet.
# Keep track of the generated changesets and of the inverse
# mapping from items to them.
- lappend mychangesets $self
- lappend mytchangesets($cstype) $self
+ #lappend mychangesets $self
+ #lappend mytchangesets($cstype) $self
set myidmap($myid) $self
foreach iid $items {
set key [list $cstype $iid]
- set myitemmap($key) $self
+ #set myitemmap($key) $self
lappend mytitems $key
log write 8 csets {MAP+ item <$key> $self = [$self str]}
+ }
+ return
+ }
+
+ method loadmaps {} {
+ # Keep track of the generated changesets and of the inverse
+ # mapping from items to them.
+ lappend mychangesets $self
+ lappend mytchangesets($mytype) $self
+ set myidmap($myid) $self
+ foreach iid $myitems {
+ set key [list $mytype $iid]
+ set myitemmap($key) $self
+ #log write 8 csets {MAP+ item <$key> $self = [$self str]}
}
return
}
@@ -72,9 +86,9 @@
# for (de)construction and pass InitCSets.
foreach iid $myitems {
set key [list $mytype $iid]
- unset myitemmap($key)
+ #unset myitemmap($key)
log write 8 csets {MAP- item <$key> $self = [$self str]}
}
return
}
@@ -283,9 +297,9 @@
# thus never more than one reference in the list.
foreach iid $myitems {
set key [list $mytype $iid]
- unset myitemmap($key)
+ #unset myitemmap($key)
log write 8 csets {MAP- item <$key> $self = [$self str]}
}
# Create changesets for the fragments, reusing the current one
@@ -326,9 +340,9 @@
set myitems [lrange $myitems 0 $firste]
set mytitems [lrange $mytitems 0 $firste]
foreach iid $myitems {
set key [list $mytype $iid]
- set myitemmap($key) $self
+ #set myitemmap($key) $self
log write 8 csets {MAP+ item <$key> $self = [$self str]}
}
return 1
@@ -779,8 +793,9 @@
FROM csitem C
WHERE C.cid = $id
ORDER BY C.pos
}] $id]
+ $r loadmaps
incr n
}
return
}
@@ -1025,9 +1040,9 @@
# changeset.
typemethod all {} { return $mychangesets }
typemethod of {cid} { return $myidmap($cid) }
- typemethod ofitem {iid} { return $myitemmap($iid) }
+ #typemethod ofitem {iid} { return $myitemmap($iid) }
typemethod rev {} { return $mytchangesets(rev) }
typemethod sym {} { return [concat \
${mytchangesets(sym::branch)} \