mirror of
https://github.com/fafhrd91/actix-net
synced 2024-11-30 16:34:36 +01:00
Avoid a copy of the Future when initializing the Box. (#29)
Future's can be pretty big (> 1500 bytes) so this probably worth doing. I confirmed with memcpy-find that this did infact eliminate two ~1500 byte copies from the actix-web basic example.
This commit is contained in:
parent
1b3cd0d88c
commit
9271b95c87
@ -24,3 +24,4 @@ tokio-current-thread = "0.1"
|
|||||||
tokio-executor = "0.1.5"
|
tokio-executor = "0.1.5"
|
||||||
tokio-reactor = "0.1.7"
|
tokio-reactor = "0.1.7"
|
||||||
tokio-timer = "0.2.8"
|
tokio-timer = "0.2.8"
|
||||||
|
copyless = "0.1.4"
|
||||||
|
@ -11,6 +11,8 @@ use tokio_current_thread::spawn;
|
|||||||
use crate::builder::Builder;
|
use crate::builder::Builder;
|
||||||
use crate::system::System;
|
use crate::system::System;
|
||||||
|
|
||||||
|
use copyless::BoxHelper;
|
||||||
|
|
||||||
thread_local!(
|
thread_local!(
|
||||||
static ADDR: RefCell<Option<Arbiter>> = RefCell::new(None);
|
static ADDR: RefCell<Option<Arbiter>> = RefCell::new(None);
|
||||||
static RUNNING: Cell<bool> = Cell::new(false);
|
static RUNNING: Cell<bool> = Cell::new(false);
|
||||||
@ -141,9 +143,9 @@ impl Arbiter {
|
|||||||
{
|
{
|
||||||
RUNNING.with(move |cell| {
|
RUNNING.with(move |cell| {
|
||||||
if cell.get() {
|
if cell.get() {
|
||||||
spawn(Box::new(future));
|
spawn(Box::alloc().init(future));
|
||||||
} else {
|
} else {
|
||||||
Q.with(move |cell| cell.borrow_mut().push(Box::new(future)));
|
Q.with(move |cell| cell.borrow_mut().push(Box::alloc().init(future)));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user