Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

"Tearing off" a method is extremely slow #550

Closed
DartBot opened this issue Nov 21, 2011 · 1 comment
Closed

"Tearing off" a method is extremely slow #550

DartBot opened this issue Nov 21, 2011 · 1 comment
Labels
closed-invalid Closed as we don't believe the reported issue is generally actionable

Comments

@DartBot
Copy link

DartBot commented Nov 21, 2011

This issue was originally filed by danri...@gmail.com


The following code times two operations:

  1. call a closure that calls a method 'tearOff' on a particular object
  2. call a closure that returns a closure representing the object's 'tearOff' method, then call that closure

On my machine (Mac Pro, OS X 10.5.8) the second approach is about 1700 times slower.

class Test {
  Test();
  void tearOff() {}
}

class Benchmark {
  Test test;
  Function closure1;
  Function closure2;

  Benchmark();

  void run() {
    test = new Test();
    closure1 = () => test.tearOff();
    closure2 = () => test.tearOff;

    for (int iter = 0; iter < 10; iter++) {
      bench();
    }
  }
  
  void bench() {
    Stopwatch w1 = new Stopwatch();
    w1.start();
    for (int i = 0; i < 10000; i++) {
      closure1();
    }
    w1.stop;
    double t1 = w1.elapsedInUs() / 10000;
    
    Stopwatch w2 = new Stopwatch();
    w2.start();
    for (int i = 0; i < 10000; i++) {
      closure2()();
    }
    w2.stop;
    double t2 = w2.elapsedInUs() / 10000;

    print("$t1 $t2 ${t2 / t1}");
  }
}

void main() {
  new Benchmark().run();
}

@DartBot
Copy link
Author

DartBot commented Nov 21, 2011

This comment was originally written by rice@google.com


Added Invalid label.

@DartBot DartBot added Type-Defect closed-invalid Closed as we don't believe the reported issue is generally actionable labels Nov 21, 2011
copybara-service bot pushed a commit that referenced this issue Jul 13, 2023
… native, protobuf, test, tools

Revisions updated by `dart tools/rev_sdk_deps.dart`.

dartdoc (https://github.com/dart-lang/dartdoc/compare/2522559..d716fa3):
  d716fa36  2023-07-13  Sam Rawlins  Migrate the try-publish and build-pub-package tasks to args commands (#3460)
  33b44d2d  2023-07-11  Sam Rawlins  Migrate doc-related tasks to package:args commands (#3459)

ecosystem (https://github.com/dart-lang/ecosystem/compare/b34db4f..db9d71d):
  db9d71d  2023-07-12  Devon Carew  upgrade to the latest stable action version (#133)
  3f4b8d1  2023-07-12  Moritz  Switch coverage computation (#132)
  5a9f06b  2023-07-10  Jacob MacDonald  add environment input to support github deployment environments (#131)
  f3b10c9  2023-07-10  Kevin Moore  blast_repo:auto-publish - add permissions by default (#129)

http (https://github.com/dart-lang/http/compare/c148a3a..b206771):
  b206771  2023-07-11  Brian Quinlan  Make native bindings pass `dart analysis` (#985)

leak_tracker (https://github.com/dart-lang/leak_tracker/compare/85bd7fb..5675231):
  5675231  2023-07-13  Polina Cherkasova  Add disconnection from service to free up references. (#91)
  9b97f84  2023-07-11  Parker Lougheed  Remove mentions to deprecated strong_mode options (#85)
  a21e90e  2023-07-11  Polina Cherkasova  Protect from identityHashCode equal to 0. (#90)
  8e3aa07  2023-07-11  Polina Cherkasova  Create troubleshooting helpers. (#89)

markdown (https://github.com/dart-lang/markdown/compare/b4bdde2..ee4e1b3):
  ee4e1b3  2023-07-13  Sam Rawlins  Bump to 7.1.1 (#550)

mockito (https://github.com/dart-lang/mockito/compare/451f756..ffbbb4c):
  ffbbb4c  2023-07-12  Ilya Yanok  Second attempt to fix "not found" error for type vars in bounds

native (https://github.com/dart-lang/native/compare/1e89ed9..acad396):
  acad396  2023-07-11  Daco Harkes  [infra] Remove the last path dependencies (#88)

protobuf (https://github.com/dart-lang/protobuf/compare/a912f76..d9e8a31):
  d9e8a31  2023-07-12  Kevin Moore  Compiler: generate doc comments (#860)

test (https://github.com/dart-lang/test/compare/3429712..a92b5bb):
  a92b5bb3  2023-07-12  Nate Bosch  Remove "compiling" messages (#2063)
  4e023035  2023-07-12  Nate Bosch  More loosely handle error message from SDK (#2064)

tools (https://github.com/dart-lang/tools/compare/af38b2b..765701d):
  765701d  2023-07-13  Elias Yishak  Enhance log file stats (#117)

Change-Id: Ib89e80f8f8963433c4abef953924830634352d86
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/313541
Auto-Submit: Devon Carew <devoncarew@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
osa1 pushed a commit to osa1/sdk that referenced this issue Jul 17, 2023
… native, protobuf, test, tools

Revisions updated by `dart tools/rev_sdk_deps.dart`.

dartdoc (https://github.com/dart-lang/dartdoc/compare/2522559..d716fa3):
  d716fa36  2023-07-13  Sam Rawlins  Migrate the try-publish and build-pub-package tasks to args commands (dart-lang#3460)
  33b44d2d  2023-07-11  Sam Rawlins  Migrate doc-related tasks to package:args commands (dart-lang#3459)

ecosystem (https://github.com/dart-lang/ecosystem/compare/b34db4f..db9d71d):
  db9d71d  2023-07-12  Devon Carew  upgrade to the latest stable action version (dart-lang#133)
  3f4b8d1  2023-07-12  Moritz  Switch coverage computation (dart-lang#132)
  5a9f06b  2023-07-10  Jacob MacDonald  add environment input to support github deployment environments (dart-lang#131)
  f3b10c9  2023-07-10  Kevin Moore  blast_repo:auto-publish - add permissions by default (dart-lang#129)

http (https://github.com/dart-lang/http/compare/c148a3a..b206771):
  b206771  2023-07-11  Brian Quinlan  Make native bindings pass `dart analysis` (dart-lang#985)

leak_tracker (https://github.com/dart-lang/leak_tracker/compare/85bd7fb..5675231):
  5675231  2023-07-13  Polina Cherkasova  Add disconnection from service to free up references. (dart-lang#91)
  9b97f84  2023-07-11  Parker Lougheed  Remove mentions to deprecated strong_mode options (dart-lang#85)
  a21e90e  2023-07-11  Polina Cherkasova  Protect from identityHashCode equal to 0. (dart-lang#90)
  8e3aa07  2023-07-11  Polina Cherkasova  Create troubleshooting helpers. (dart-lang#89)

markdown (https://github.com/dart-lang/markdown/compare/b4bdde2..ee4e1b3):
  ee4e1b3  2023-07-13  Sam Rawlins  Bump to 7.1.1 (dart-lang#550)

mockito (https://github.com/dart-lang/mockito/compare/451f756..ffbbb4c):
  ffbbb4c  2023-07-12  Ilya Yanok  Second attempt to fix "not found" error for type vars in bounds

native (https://github.com/dart-lang/native/compare/1e89ed9..acad396):
  acad396  2023-07-11  Daco Harkes  [infra] Remove the last path dependencies (dart-lang#88)

protobuf (https://github.com/dart-lang/protobuf/compare/a912f76..d9e8a31):
  d9e8a31  2023-07-12  Kevin Moore  Compiler: generate doc comments (dart-lang#860)

test (https://github.com/dart-lang/test/compare/3429712..a92b5bb):
  a92b5bb3  2023-07-12  Nate Bosch  Remove "compiling" messages (dart-lang#2063)
  4e023035  2023-07-12  Nate Bosch  More loosely handle error message from SDK (dart-lang#2064)

tools (https://github.com/dart-lang/tools/compare/af38b2b..765701d):
  765701d  2023-07-13  Elias Yishak  Enhance log file stats (dart-lang#117)

Change-Id: Ib89e80f8f8963433c4abef953924830634352d86
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/313541
Auto-Submit: Devon Carew <devoncarew@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
This issue was closed.
# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
closed-invalid Closed as we don't believe the reported issue is generally actionable
Projects
None yet
Development

No branches or pull requests

1 participant