summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRyan Dahl <ry@tinyclouds.org>2020-01-30 10:49:33 -0500
committerGitHub <noreply@github.com>2020-01-30 10:49:33 -0500
commit2338e7679c8840314642dbf3ea838908f5f35d3c (patch)
treefd8a56d12bc84167e306fb7fdf71a32ab86362ad
parent51089836eb835d6b4cc03653dcb0b7a281017157 (diff)
Remove --current-thread flag (#3830)
This flag was added to evaluate performance relative to tokio's threaded runtime. Although it's faster in the HTTP benchmark, it's clear the runtime is not the only perf problem. Removing this flag will simplify further refactors, in particular adopting the #[tokio::main] macro. This will be done in a follow up. Ultimately we expect to move to the current thread runtime with Isolates pinned to specific threads, but that will be a much larger refactor. The --current-thread just complicates that effort.
-rw-r--r--cli/flags.rs25
-rw-r--r--cli/lib.rs7
-rw-r--r--cli/tests/integration_tests.rs5
-rw-r--r--cli/tokio_util.rs13
-rw-r--r--std/manual.md3
-rwxr-xr-xtools/http_benchmark.py12
6 files changed, 1 insertions, 64 deletions
diff --git a/cli/flags.rs b/cli/flags.rs
index eaf9b7fc5..d7a95d79e 100644
--- a/cli/flags.rs
+++ b/cli/flags.rs
@@ -85,8 +85,6 @@ pub struct DenoFlags {
pub cached_only: bool,
pub seed: Option<u64>,
pub v8_flags: Option<Vec<String>>,
- // Use tokio::runtime::current_thread
- pub current_thread: bool,
pub bundle_output: Option<String>,
@@ -438,10 +436,6 @@ fn run_test_args_parse(flags: &mut DenoFlags, matches: &clap::ArgMatches) {
flags.cached_only = true;
}
- if matches.is_present("current-thread") {
- flags.current_thread = true;
- }
-
if matches.is_present("seed") {
let seed_string = matches.value_of("seed").unwrap();
let seed = seed_string.parse::<u64>().unwrap();
@@ -755,11 +749,6 @@ fn run_test_args<'a, 'b>(app: App<'a, 'b>) -> App<'a, 'b> {
.help("Require that remote dependencies are already cached"),
)
.arg(
- Arg::with_name("current-thread")
- .long("current-thread")
- .help("Use tokio::runtime::current_thread"),
- )
- .arg(
Arg::with_name("seed")
.long("seed")
.value_name("NUMBER")
@@ -1874,20 +1863,6 @@ mod tests {
}
#[test]
- fn current_thread() {
- let r = flags_from_vec_safe(svec!["deno", "--current-thread", "script.ts"]);
- assert_eq!(
- r.unwrap(),
- DenoFlags {
- subcommand: DenoSubcommand::Run,
- argv: svec!["deno", "script.ts"],
- current_thread: true,
- ..DenoFlags::default()
- }
- );
- }
-
- #[test]
fn allow_net_whitelist_with_ports() {
let r = flags_from_vec_safe(svec![
"deno",
diff --git a/cli/lib.rs b/cli/lib.rs
index fe20cd135..7a0d66cf5 100644
--- a/cli/lib.rs
+++ b/cli/lib.rs
@@ -378,7 +378,6 @@ fn run_repl(flags: DenoFlags) {
}
fn run_script(flags: DenoFlags) {
- let use_current_thread = flags.current_thread;
let (mut worker, state) = create_worker_and_state(flags);
let maybe_main_module = state.main_module.as_ref();
@@ -416,11 +415,7 @@ fn run_script(flags: DenoFlags) {
js_check(worker_.execute("window.dispatchEvent(new Event('unload'))"));
};
- if use_current_thread {
- tokio_util::run_on_current_thread(main_future);
- } else {
- tokio_util::run(main_future);
- }
+ tokio_util::run(main_future);
}
fn format_command(files: Option<Vec<String>>, check: bool) {
diff --git a/cli/tests/integration_tests.rs b/cli/tests/integration_tests.rs
index 501ff1713..b8103fd76 100644
--- a/cli/tests/integration_tests.rs
+++ b/cli/tests/integration_tests.rs
@@ -320,11 +320,6 @@ itest!(_036_import_map_fetch {
output: "036_import_map_fetch.out",
});
-itest!(_037_current_thread {
- args: "run --current-thread --reload 034_onload/main.ts",
- output: "034_onload.out",
-});
-
itest!(_038_checkjs {
// checking if JS file is run through TS compiler
args: "run --reload --config 038_checkjs.tsconfig.json 038_checkjs.js",
diff --git a/cli/tokio_util.rs b/cli/tokio_util.rs
index 017013b3b..df14d11e4 100644
--- a/cli/tokio_util.rs
+++ b/cli/tokio_util.rs
@@ -15,16 +15,3 @@ where
.expect("Unable to create Tokio runtime");
rt.block_on(future);
}
-
-pub fn run_on_current_thread<F>(future: F)
-where
- F: Future<Output = ()> + Send + 'static,
-{
- let mut rt = runtime::Builder::new()
- .basic_scheduler()
- .enable_all()
- .thread_name("deno")
- .build()
- .expect("Unable to create Tokio runtime");
- rt.block_on(future);
-}
diff --git a/std/manual.md b/std/manual.md
index c3117bd9d..d97e42705 100644
--- a/std/manual.md
+++ b/std/manual.md
@@ -1267,9 +1267,6 @@ Useful V8 flags during profiling:
- --log-source-code
- --track-gc-object-stats
-Note that you might need to run Deno with `--current-thread` flag to capture
-full V8 profiling output.
-
To learn more about `d8` and profiling, check out the following links:
- [https://v8.dev/docs/d8](https://v8.dev/docs/d8)
diff --git a/tools/http_benchmark.py b/tools/http_benchmark.py
index 03f9f4365..d46d8a33d 100755
--- a/tools/http_benchmark.py
+++ b/tools/http_benchmark.py
@@ -42,17 +42,6 @@ def deno_tcp(deno_exe):
return run(deno_cmd, port)
-def deno_tcp_current_thread(deno_exe):
- port = get_port()
- deno_cmd = [
- deno_exe, "run", "--current-thread", "--allow-net",
- "tools/deno_tcp.ts",
- server_addr(port)
- ]
- print "http_benchmark testing DENO tcp (single-thread)."
- return run(deno_cmd, port)
-
-
def deno_http(deno_exe):
port = get_port()
deno_cmd = [
@@ -154,7 +143,6 @@ def http_benchmark(build_dir):
return {
# "deno_tcp" was once called "deno"
"deno_tcp": deno_tcp(deno_exe),
- "deno_tcp_current_thread": deno_tcp_current_thread(deno_exe),
# "deno_http" was once called "deno_net_http"
"deno_http": deno_http(deno_exe),
"deno_proxy": deno_http_proxy(deno_exe, hyper_hello_exe),