#include "btreecompactsstree.h"#include "basepacking.h"#include "btreecompact.h"#include "btreefromsstree.h"#include <fstream>#include <string>#include <iomanip>Include dependency graph for btreecompactsstree.cxx:

Go to the source code of this file.
Functions | |
| 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:

1.3.2