More small optimizations
This commit is contained in:
parent
f97d1e1569
commit
cb5d5a9397
5 changed files with 12 additions and 9 deletions
|
@ -88,11 +88,11 @@ void gmrf_schedule(gmrf_t *gmrf, gmrf_scheduled_func f, void *arg, unsigned dela
|
|||
|
||||
std::shared_ptr<MMSS::scheduled_t> scheduled = std::make_shared<MMSS::scheduled_t>();
|
||||
|
||||
scheduled->node = node;
|
||||
scheduled->node = std::move(node);
|
||||
scheduled->f = f;
|
||||
scheduled->arg = arg;
|
||||
|
||||
gmrf->mmss->scheduled_queue.put(scheduled, gmrf->mmss->now+delay);
|
||||
gmrf->mmss->scheduled_queue.put(std::move(scheduled), gmrf->mmss->now+delay);
|
||||
}
|
||||
|
||||
gmrf_time_t gmrf_now(gmrf_t *gmrf) {
|
||||
|
|
|
@ -70,7 +70,7 @@ void enqueue(context_t *mmss, const std::shared_ptr<iface_t> &source, const std:
|
|||
packet->data.reset(new uint8_t[len]);
|
||||
std::memcpy(packet->data.get(), data, len);
|
||||
|
||||
mmss->packet_queue.put(packet, mmss->now+1);
|
||||
mmss->packet_queue.put(std::move(packet), mmss->now+1);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -37,10 +37,10 @@ void logf(context_t *mmss, int priority, const char *format, ...) {
|
|||
|
||||
std::va_list ap;
|
||||
va_start(ap, format);
|
||||
vsnprintf(buf+pos, sizeof(buf)-pos, format, ap);
|
||||
std::vsnprintf(buf+pos, sizeof(buf)-pos, format, ap);
|
||||
va_end(ap);
|
||||
|
||||
fprintf(stderr, "%s\n", buf);
|
||||
std::fprintf(stderr, "%s\n", buf);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -69,7 +69,7 @@ void main(int argc, char *argv[]) {
|
|||
context_t mmss;
|
||||
config_t conf = {};
|
||||
|
||||
read_config(&mmss, &conf, "babel_test.mmss");
|
||||
//read_config(&mmss, &conf, "babel_test.mmss");
|
||||
|
||||
std::shared_ptr<network_t> net0 = std::make_shared<network_t>();
|
||||
std::shared_ptr<network_t> net1 = std::make_shared<network_t>();
|
||||
|
@ -96,6 +96,9 @@ void main(int argc, char *argv[]) {
|
|||
add_iface(node3, net1, "mmss1", &addr4);
|
||||
|
||||
while (true) {
|
||||
if (mmss.now > 1000000000)
|
||||
break;
|
||||
|
||||
int timeout = get_queue_timeout(&mmss);
|
||||
|
||||
if (timeout < 0) {
|
||||
|
|
|
@ -39,7 +39,7 @@ template<typename T> class timeout_queue_t {
|
|||
std::shared_ptr<T> data;
|
||||
uint64_t timeout;
|
||||
|
||||
element_t(const std::shared_ptr<T> &data0, uint64_t timeout0) : data(data0), timeout(timeout0) {}
|
||||
element_t(std::shared_ptr<T> &&data0, uint64_t timeout0) : data(std::move(data0)), timeout(timeout0) {}
|
||||
};
|
||||
|
||||
context_t *mmss;
|
||||
|
@ -49,13 +49,13 @@ template<typename T> class timeout_queue_t {
|
|||
public:
|
||||
timeout_queue_t(context_t *mmss0) : mmss(mmss0) {}
|
||||
|
||||
void put(const std::shared_ptr<T> &data, uint64_t timeout) {
|
||||
void put(std::shared_ptr<T> &&data, uint64_t timeout) {
|
||||
auto it = queue.begin(), end = queue.end();
|
||||
|
||||
while (it != end && it->timeout < timeout)
|
||||
++it;
|
||||
|
||||
queue.insert(it, element_t(data, timeout));
|
||||
queue.emplace(it, std::move(data), timeout);
|
||||
}
|
||||
|
||||
std::shared_ptr<T> get() {
|
||||
|
|
Reference in a new issue