diff options
Diffstat (limited to 'courgette/adjustment_method_2.cc')
-rw-r--r-- | courgette/adjustment_method_2.cc | 79 |
1 files changed, 25 insertions, 54 deletions
diff --git a/courgette/adjustment_method_2.cc b/courgette/adjustment_method_2.cc index 244b3a0..cdc5b97 100644 --- a/courgette/adjustment_method_2.cc +++ b/courgette/adjustment_method_2.cc @@ -1,4 +1,4 @@ -// Copyright (c) 2009 The Chromium Authors. All rights reserved. +// Copyright (c) 2010 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. @@ -12,8 +12,6 @@ #include <string> #include <vector> -#include <iostream> - #include "base/basictypes.h" #include "base/format_macros.h" #include "base/logging.h" @@ -153,31 +151,6 @@ low-scoring assignments in the approximation for large equivalence classes. namespace courgette { namespace adjustment_method_2 { -// We have three discretionary information logging levels for algorithm -// development. For now just configure with #defines. -// TODO(sra): make dependent of some configurable setting. -struct LogToCout { - LogToCout() {} - ~LogToCout() { std::cout << std::endl; } - std::ostream& stream() { return std::cout; } -}; -#define LOG_TO_COUT (LogToCout().stream()) -#define NO_LOG DLOG_IF(INFO, false) - -#if 0 // Log to log file. -#define ALOG1 LOG(INFO) -#define ALOG2 LOG(INFO) -#define ALOG3 LOG(INFO) -#elif 0 // Log to stdout. -#define ALOG1 LOG_TO_COUT -#define ALOG2 LOG_TO_COUT -#define ALOG3 LOG_TO_COUT -#else // Log to nowhere. -#define ALOG1 NO_LOG -#define ALOG2 NO_LOG -#define ALOG3 NO_LOG -#endif - //////////////////////////////////////////////////////////////////////////////// class AssignmentCandidates; @@ -348,14 +321,14 @@ class AssignmentCandidates { } void Print(int max) { - ALOG1 << "score " << TopScore() << " " << ToString(program_info_) - << " := ?"; + VLOG(2) << "score " << TopScore() << " " << ToString(program_info_) + << " := ?"; if (!pending_updates_.empty()) - ALOG1 << pending_updates_.size() << " pending"; + VLOG(2) << pending_updates_.size() << " pending"; int count = 0; for (Queue::iterator q = queue_.begin(); q != queue_.end(); ++q) { if (++count > max) break; - ALOG1 << " " << q->first << " " << ToString(q->second); + VLOG(2) << " " << q->first << " " << ToString(q->second); } } @@ -828,8 +801,8 @@ class AssignmentProblem { AssignmentProblem(const Trace& trace, size_t model_end) : trace_(trace), model_end_(model_end) { - ALOG1 << "AssignmentProblem::AssignmentProblem " << model_end << ", " - << trace.size(); + VLOG(2) << "AssignmentProblem::AssignmentProblem " << model_end << ", " + << trace.size(); } bool Solve() { @@ -845,10 +818,8 @@ class AssignmentProblem { AddPatternsNeedingUpdatesToQueues(); patterns_needing_updates_.clear(); - while (FindAndAssignBestLeader()) { - NO_LOG << "Updated " << patterns_needing_updates_.size() << " patterns"; + while (FindAndAssignBestLeader()) patterns_needing_updates_.clear(); - } PrintActivePatterns(); return true; @@ -874,11 +845,11 @@ class AssignmentProblem { SingleUsePatternQueue; void PrintPatternsHeader() const { - ALOG1 << shingle_instances_.size() << " instances " - << trace_.size() << " trace length " - << patterns_.size() << " shingle indexes " - << single_use_pattern_queue_.size() << " single use patterns " - << active_non_single_use_patterns_.size() << " active patterns"; + VLOG(2) << shingle_instances_.size() << " instances " + << trace_.size() << " trace length " + << patterns_.size() << " shingle indexes " + << single_use_pattern_queue_.size() << " single use patterns " + << active_non_single_use_patterns_.size() << " active patterns"; } void PrintActivePatterns() const { @@ -887,7 +858,7 @@ class AssignmentProblem { p != active_non_single_use_patterns_.end(); ++p) { const ShinglePattern* pattern = *p; - ALOG1 << ToString(pattern, 10); + VLOG(2) << ToString(pattern, 10); } } @@ -902,7 +873,7 @@ class AssignmentProblem { p != patterns_.end(); ++p) { const ShinglePattern& pattern = p->second; - ALOG1 << ToString(&pattern, 10); + VLOG(2) << ToString(&pattern, 10); } } @@ -911,7 +882,7 @@ class AssignmentProblem { p != shingle_instances_.end(); ++p) { const Shingle& instance = *p; - ALOG1 << ToString(&instance) << " " << ToString(instance.pattern()); + VLOG(2) << ToString(&instance) << " " << ToString(instance.pattern()); } } @@ -1093,10 +1064,10 @@ class AssignmentProblem { LabelInfo* model_info = model_instance->at(i); if ((model_info->assignment_ == NULL) != (program_info->assignment_ == NULL)) { - ALOG1 << "ERROR " << i - << "\n\t" << ToString(pattern, 10) - << "\n\t" << ToString(program_instance) - << "\n\t" << ToString(model_instance); + VLOG(2) << "ERROR " << i + << "\n\t" << ToString(pattern, 10) + << "\n\t" << ToString(program_instance) + << "\n\t" << ToString(model_instance); } if (!program_info->assignment_ && !model_info->assignment_) { sums[program_info][model_info] += score; @@ -1139,8 +1110,8 @@ class AssignmentProblem { LOG_ASSERT(model_info->is_model_); LOG_ASSERT(!program_info->is_model_); - ALOG2 << "Assign " << ToString(program_info) - << " := " << ToString(model_info); + VLOG(3) << "Assign " << ToString(program_info) + << " := " << ToString(model_info); ShingleSet affected_shingles; AddAffectedPositions(model_info, &affected_shingles); @@ -1254,7 +1225,7 @@ class Adjuster : public AdjustmentMethod { ~Adjuster() {} bool Adjust(const AssemblyProgram& model, AssemblyProgram* program) { - LOG(INFO) << "Adjuster::Adjust"; + VLOG(1) << "Adjuster::Adjust"; prog_ = program; model_ = &model; return Finish(); @@ -1297,8 +1268,8 @@ class Adjuster : public AdjustmentMethod { base::Time start_time = base::Time::Now(); AssignmentProblem a(model, model_end); a.Solve(); - LOG(INFO) << " Adjuster::Solve " - << (base::Time::Now() - start_time).InSecondsF(); + VLOG(1) << " Adjuster::Solve " + << (base::Time::Now() - start_time).InSecondsF(); } void ReferenceLabel(Trace* trace, Label* label, bool is_model) { |