summaryrefslogtreecommitdiff
path: root/docs/ACE-subsets.html
blob: 31d2bdec06891d6744930e75c786abd5c1603812 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
<!-- $Id$ -->

<html>
  <head>
    <title>ACE+TAO Subsetting</title>
    <link rev=made href="mailto:ace-users@cs.wustl.edu">
  </head>

<body text = "#000000"
      link="#000fff"
      vlink="#ff0f0f"
      bgcolor="#ffffff">

<hr><p>
<H2>ACE+TAO Subsetting</H2>

<p>
We are involved in ongoing activities to subset ACE+TAO to make them
more flexible and to reduce their memory footprint for embedded
systems.  This document describes what we've done thus far, what we're
planning to do next, and how to leverage our efforts to minimize the
size of your ACE+TAO applications. </P>

<hr>
<h3>Contents</h3>
<ul>
 <li><a href="#pastwork">Past Work</a>
 <li><a href="#futurework">Future Work</a>
</ul>

<hr>
<h3><a name="pastwork">Past Work</a></h3>
<p>
Previous ACE+TAO subsetting efforts were mainly concerned with
breaking up ACE into multiple libraries.  Although this is a worthy
goal, the existing component definitions in 
<a href="../ace/ace.mpc">ace.mpc</a> are too tighly coupled.
Therefore, even if ACE is compiled into multiple libraries,
applications will still have to link almost every one of them.</p>

<p>
Potentially more satisfying results can be obtained through the use of
namespaces, e.g., ACE_OS, and/or breaking up large cpp's into smaller
ones to decrease the size of object files, and statically linking them
into the application.</p>

<p>
In fact, this technique was applied systematically to ACE_OS in 2003,
and resulted in a <a
href="http://www.dre.vanderbilt.edu/Stats/footprint.shtml">10-15%
decrease in overall footprint</a> for statically linked applications.
Interestingly, these techniques also helped reduce <a
href="http://www.dre.vanderbilt.edu/~isisbuilds/auto_compile_logs/CP_Metrics/metrics/">compilation
times by ~50%</a>.</p>

<p>
Another very powerful technique for reducing the size of shared
libries is <a href="../apps/soreduce/README">The Shared Library
Reduction (<CODE>soreduce</CODE>) tool</a>.  <code>soreduce</code>
also benifits from the techniques listed above and should give
results comparable to static linking.  In fact, when deploying multiple
applications, use of shared libraries with <code>soreduce</code> will
result in smaller overall footprint than static linking.</p>

<hr>
<h3><a name="futurework">Future Work</a></h3>
<p>
Future work includes converting additional classes to namespaces,
e.g., ACE, modifying inlines to reduce unneeded coupling, and
refactoring some of the ubiquitous classes and frameworks in ACE, e.g.,
Logging, to further reduce coupling (which should make it possible to
break up ACE into multiple independent libraries).</p>  

<p>
Anyone interested in contributing to the effort should contact <a
href="mailto:d.hinton@vanderbilt.edu">d.hinton@vanderbilt.edu</a>.</p>


<P><HR><P>
Back to the <A HREF="http://www.cs.wustl.edu/~schmidt/ACE.html">ACE</A>
home page.<BR>
Back to <A HREF="index.html">ACE Documentation Home</A>.

<!--#include virtual="/~schmidt/cgi-sig.html" -->
</BODY>
</HTML>