Main Page | Namespace List | Class Hierarchy | Compound List | File List | Namespace Members | Compound Members | File Members

btreecompactsstree.cxx File Reference

#include "btreecompactsstree.h"
#include "basepacking.h"
#include "btreecompact.h"
#include "btreefromsstree.h"
#include <fstream>
#include <string>
#include <iomanip>

Include dependency graph for btreecompactsstree.cxx:

Include dependency graph

Go to the source code of this file.

Functions

double BTreeCompactSlice (const SoftPacking &spk, const string &outfilename)


Function Documentation

double BTreeCompactSlice const SoftPacking &  spk,
const string &  outfilename
 

Definition at line 46 of file btreecompactsstree.cxx.

References BTree::blockArea(), BTreeCompactor::compact(), getTolerance(), PrintAreas(), PrintDimensions(), PrintUtilization(), Save_bbb(), BTree::totalArea(), BTree::totalHeight(), and BTree::totalWidth().

00048 {
00049    SoftPackingHardBlockInfoType hardblockinfo(spk);
00050    BTreeFromSoftPacking btree(hardblockinfo, spk,
00051                               getTolerance(hardblockinfo));
00052    BTreeCompactor compactor(btree);
00053 
00054    int numChanged = 0;
00055    int i = 0;
00056 
00057    double orig_totalArea = compactor.totalArea();
00058    double orig_blockArea = compactor.blockArea();
00059    double spk_totalArea = spk.totalWidth * spk.totalHeight;
00060    printf("converted to B*-Tree: %.2lf (%.2lf%%) -> %.2lf (%.2lf%%)\n",
00061           spk_totalArea, (spk.deadspace / spk.blockArea) * 100,
00062           orig_totalArea, (orig_totalArea / orig_blockArea - 1)* 100);
00063    do
00064    {
00065       numChanged = compactor.compact();
00066    
00067       printf("round %d: %6d blks changed: %.2lf (%.2lf%%) -> %.2lf (%.2lf%%)\n",
00068              i, numChanged, orig_totalArea,
00069              (orig_totalArea / orig_blockArea - 1) * 100,
00070              compactor.totalArea(),
00071              (compactor.totalArea() / compactor.blockArea() - 1) * 100);
00072       i++;
00073       orig_totalArea = compactor.totalArea();
00074       orig_blockArea = compactor.blockArea();
00075    } while (numChanged != 0);
00076 
00077    double final_blkArea = compactor.blockArea();
00078    double final_deadspace = compactor.totalArea() - final_blkArea;
00079    cout << endl;
00080    cout << "After compaction, " << endl;
00081    cout << "blkArea: " << setw(11) << final_blkArea
00082         << " deadspace: " << setw(11) << final_deadspace
00083         << " (" << ((final_deadspace / final_blkArea) * 100) << "%)" << endl;
00084 
00085    cout << endl;
00086    PrintDimensions(compactor.totalWidth(), compactor.totalHeight());
00087    PrintAreas(final_deadspace, final_blkArea);
00088    cout << endl;
00089    PrintUtilization(final_deadspace, final_blkArea);
00090    cout << endl;
00091    
00092    ofstream outfile;
00093    outfile.open(outfilename.c_str());
00094    Save_bbb(outfile, BTreeOrientedPacking(compactor));
00095    if (outfile.good())
00096       cout << "Output successfully written to " << outfilename << endl;
00097    else
00098       cout << "Something wrong with the file " << outfilename << endl;
00099    outfile.close();
00100 
00101    return (compactor.totalArea() - compactor.blockArea());
00102 }

Here is the call graph for this function:


Generated on Mon Apr 25 01:10:43 2005 for Parquete by doxygen 1.3.2