~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to doc/developers/performance.dot

  • Committer: Robert Collins
  • Date: 2007-06-19 00:48:22 UTC
  • mto: This revision was merged to the branch mainline in revision 2539.
  • Revision ID: robertc@robertcollins.net-20070619004822-wsop5g2arwu1lti4
Draft proposed integration order for performance changes.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
/* ESTIMATES ARE VERY ROUGH APPROXIMATIONS */
2
 
digraph performance {
3
 
  gdfo_api -> gdfo_cache;
4
 
  gdfo_api -> gdfo_usage;
5
 
  gdfo_api[label="GDFO API\n1 day"];
 
2
strict digraph performance {
 
3
  /* completed node list */
 
4
  node[color="green"];
 
5
  add_analysis[label="Work required analysis for add"];
 
6
  branch_analysis[label="Work required analysis for branch"];
 
7
  bundle_analysis[label="Work required analysis for creating a bundle"];
 
8
  wt_disk_order[label="Working Tree disk ordering\n6-8 weeks"];
 
9
 
 
10
  /* uncompleted node list - add new tasks here */
 
11
  node[color="blue"];
 
12
  annotate_analysis[label="Work required analysis for annotate"];
 
13
  status_analysis[label="Work required analysis for status"];
 
14
  commit_analysis[label="Work required analysis for commit"];
 
15
  fetch_analysis[label="Work required analysis for push/pull"];
 
16
  log_analysis[label="Work required analysis for log"];
 
17
  log_path_analysis[label="Work required analysis for log of selected paths."];
 
18
  diff_analysis[label="Work required analysis for diff"];
 
19
  diff_path_analysis[label="Work required analysis for diff of selected paths"];
 
20
  revert_analysis[label="Work required analysis for revert"];
 
21
  revert_path_analysis[label="Work required analysis for revert of selected paths"];
 
22
  merge_analysis[label="Work required analysis for merge"];
 
23
  uncommit_analysis[label="Work required analysis for uncommit"];
 
24
  missing_analysis[label="Work required analysis for missing"];
 
25
  update_analysis[label="Work required analysis for update"];
 
26
  cbranch_analysis[label="Work required analysis for cbranch"];
 
27
 
 
28
  add_api_stack[label="Targeted API stack for add"];
 
29
  branch_api_stack[label="Targeted API stack for branch"];
 
30
  bundle_api_stack[label="Targeted API stack for creating a bundle"];
 
31
  annotate_api_stack[label="Targeted API stack for annotate"];
 
32
  status_api_stack[label="Targeted API stack for status"];
 
33
  commit_api_stack[label="Targeted API stack for commit"];
 
34
  fetch_api_stack[label="Targeted API stack for push/pull"];
 
35
  log_api_stack[label="Targeted API stack for log"];
 
36
  log_path_api_stack[label="Targeted API stack for log of selected paths."];
 
37
  diff_api_stack[label="Targeted API stack for diff"];
 
38
  revert_api_stack[label="Targeted API stack for revert"];
 
39
  revert_path_api_stack[label="Targeted API stack for revert of selected paths"];
 
40
  merge_api_stack[label="Targeted API stack for merge"];
 
41
  uncommit_api_stack[label="Targeted API stack for uncommit"];
 
42
  missing_api_stack[label="Targeted API stack for missing"];
 
43
  update_api_stack[label="Targeted API stack for update"];
 
44
  cbranch_api_stack[label="Targeted API stack for cbranch"];
 
45
 
 
46
/*  gdfo_api[label="GDFO API\n1 day"];
6
47
  gdfo_cache[label="GDFO Cache\n1 week"];
7
 
  gdfo_usage[label="GDFO Usage\n3 days"];
8
 
  data_collation[label="Data co-location API\n1 month"];
 
48
  gdfo_usage[label="GDFO Usage\n3 days"]; */
 
49
  data_collation[label="Stream API for inserting/obtaining revision data.\n1 month"];
9
50
  repository_stacking[label="Repository stacking API\n2 months"];
10
 
  bundle_container[label="Bundle container format\n2 weeks"]
 
51
  new_container[label="New container format\n2 weeks"]
11
52
  xdelta[label="Xdelta sanity/learning\n2 weeks"];
12
53
  xdelta_imp[label="Xdelta implementation\n1 week"];
13
 
  xdelta -> xdelta_imp;
14
54
  q_splitting[label="Question radix directory splitting\n2 weeks"];
15
 
  i_splitting[label="Implement inventory splitting\n6-8 weeks"]
16
 
  q_splitting -> i_splitting;
17
 
  get_weave[label="deprecate get_weave\n1 week"];
18
 
  per_file_graph -> get_weave;
19
 
  per_file_graph[label="Access for per-file graph data\n1 days"];
20
 
  repo_apis[label="For each use case, build targeted repo agnostic APIs\n10-40 days"];
21
 
  rev_validators[label="Revision validators (use in GPG sigs etc) may poly\n3 days"];
 
55
  i_splitting[label="Inventory storage changed to answer what-changed quickly\n6-8 weeks"]
 
56
  per_file_graph[label="Provide an API for per-file graph data rather than physical storage coupled knits api.\n1 days"];
 
57
  deprecate_versionedfile_api[label="Deprecate the public API for access to physical knit storage."];
22
58
  anno_cache[label="Annotations become a cache:\n logically separate data\n2 weeks"]
23
59
  anno_regen[label="Annotation regeneration\n"];
24
60
  anno_kinds[label="Different styles of annotation"];
25
 
  anno_regen -> anno_kinds;
26
 
  anno_cache -> anno_regen;
27
61
  memory_copies[label="Stop requiring full memory copies of files"];
28
 
  wt_disk_order[label="Working Tree disk ordering\n6-8 weeks"];
29
62
  repo_disk_order[label="Repository disk ordering\n1 month"];
 
63
  pack_repository[label="Pack based repository format"];
30
64
  graph_api[label="Network-efficient revision-graph API\n3 week"];
31
65
  iter_merge[label="iter_changes based merge\n2 days"];
 
66
  validators[label="Build new validators for revisions and trees."];
 
67
 
 
68
  /* under discussion/optional */
 
69
  node[color="yellow"];
 
70
  hash_names[label="Use hashes as names for some objects\n(to reduce tracking metadata and ease interoperability."];
 
71
 
 
72
  /* dependencies */
 
73
  gdfo_api -> gdfo_cache;
 
74
  gdfo_api -> gdfo_usage;
 
75
  xdelta -> xdelta_imp;
 
76
  q_splitting -> i_splitting;
 
77
  per_file_graph -> deprecate_versionedfile_api;
 
78
  anno_regen -> anno_kinds;
 
79
  anno_cache -> anno_regen;
 
80
  add_analysis -> add_api_stack;
 
81
  annotate_analysis -> annotate_api_stack -> anno_cache;
 
82
  annotate_api_stack -> per_file_graph -> graph_api;
 
83
  annotate_api_stack -> memory_copies;
 
84
  annotate_api_stack -> hash_names;
 
85
  branch_analysis -> branch_api_stack -> repository_stacking;
 
86
  branch_api_stack -> memory_copies;
 
87
  bundle_analysis -> bundle_api_stack -> data_collation;
 
88
  bundle_api_stack -> repository_stacking;
 
89
  bundle_api_stack -> validators;
 
90
  bundle_api_stack -> graph_api;
 
91
  bundle_api_stack -> memory_copies;
 
92
  bundle_api_stack -> new_container;
 
93
  bundle_analysis -> hash_names;
 
94
  cbranch_analysis -> cbranch_api_stack;
 
95
  commit_analysis -> commit_api_stack -> data_collation;
 
96
  commit_api_stack -> per_file_graph;
 
97
  commit_api_stack -> validators;
 
98
  commit_api_stack -> memory_copies;
 
99
  commit_api_stack -> hash_names;
 
100
  diff_analysis -> diff_api_stack;
 
101
  diff_api_stack -> memory_copies;
 
102
  diff_path_analysis -> diff_api_stack -> i_splitting;
 
103
  diff_api_stack -> hash_names;
 
104
  fetch_analysis -> fetch_api_stack -> data_collation;
 
105
  fetch_api_stack -> repository_stacking;
 
106
  fetch_api_stack -> graph_api;
 
107
  fetch_api_stack -> memory_copies;
 
108
  fetch_api_stack -> hash_names;
 
109
  repository_stacking -> graph_api;
 
110
  hash_names -> i_splitting;
 
111
  log_analysis -> log_api_stack -> i_splitting;
 
112
  log_path_analysis -> log_path_api_stack;
 
113
  log_path_api_stack -> per_file_graph;
 
114
  merge_analysis -> merge_api_stack -> iter_merge -> i_splitting;
 
115
  merge_api_stack -> memory_copies;
 
116
  missing_analysis -> missing_api_stack -> repository_stacking;
 
117
  new_container -> pack_repository;
 
118
  pack_repository -> xdelta_imp;
 
119
  pack_repository -> repo_disk_order;
 
120
  per_file_graph -> hash_names;
 
121
  repository_stacking -> pack_repository;
 
122
  repository_stacking -> new_container;
 
123
  revert_analysis -> revert_api_stack -> data_collation;
 
124
  revert_path_analysis -> revert_path_api_stack;
 
125
  revert_api_stack -> memory_copies;
 
126
  status_analysis -> status_api_stack;
 
127
  status_api_stack -> memory_copies;
 
128
  uncommit_analysis -> uncommit_api_stack -> data_collation;
 
129
  uncommit_api_stack -> graph_api;
 
130
  update_analysis -> update_api_stack;
 
131
  update_api_stack -> memory_copies;
32
132
}