1
/* -*- mode: c++; c-basic-offset: 2; indent-tabs-mode: nil; -*-
2
* vim:expandtab:shiftwidth=2:tabstop=2:smarttab:
4
* Copyright (C) 2008 Sun Microsystems
6
* This program is free software; you can redistribute it and/or modify
7
* it under the terms of the GNU General Public License as published by
8
* the Free Software Foundation; version 2 of the License.
10
* This program is distributed in the hope that it will be useful,
11
* but WITHOUT ANY WARRANTY; without even the implied warranty of
12
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
* GNU General Public License for more details.
15
* You should have received a copy of the GNU General Public License
16
* along with this program; if not, write to the Free Software
17
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
20
#ifndef DRIZZLED_OPTIMIZER_COST_VECTOR_H
21
#define DRIZZLED_OPTIMIZER_COST_VECTOR_H
41
return IO_COEFF*io_count*avg_io_cost + CPU_COEFF * cpu_cost +
42
MEM_COEFF*mem_cost + IMPORT_COEFF*import_cost;
48
io_count= cpu_cost= mem_cost= import_cost= 0.0;
51
void multiply(double m)
56
/* Don't multiply mem_cost */
59
void add(const CostVector* cost)
61
double io_count_sum= io_count + cost->io_count;
62
add_io(cost->io_count, cost->avg_io_cost);
63
io_count= io_count_sum;
64
cpu_cost += cost->cpu_cost;
66
void add_io(double add_io_cnt, double add_avg_cost)
68
double io_count_sum= io_count + add_io_cnt;
69
avg_io_cost= (io_count * avg_io_cost +
70
add_io_cnt * add_avg_cost) / io_count_sum;
71
io_count= io_count_sum;
75
void setIOCount(double m)
79
double getIOCount() const
83
void setAvgIOCost(double m)
87
double getAvgIOCost() const
91
void setCpuCost(double m)
95
double getCpuCost() const
99
void setMemCost(double m)
103
double getMemCost() const
107
void setImportCost(double m)
111
double getImportCost() const
118
double io_count; /* number of I/O */
119
double avg_io_cost; /* cost of an average I/O oper. */
120
double cpu_cost; /* cost of operations in CPU */
121
double mem_cost; /* cost of used memory */
122
double import_cost; /* cost of remote operations */
124
static const uint32_t IO_COEFF=1;
125
static const uint32_t CPU_COEFF=1;
126
static const uint32_t MEM_COEFF=1;
127
static const uint32_t IMPORT_COEFF=1;
130
} /* namespace optimizer */
131
} /* namespace drizzled */
133
#endif /* DRIZZLED_OPTIMIZER_COST_VECTOR_H */