aboutsummaryrefslogtreecommitdiff
path: root/bench/snippets/define-properties.mjs
blob: 935737b2db54aea3264671f7954626d7de560038 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
import { bench, run } from "../node_modules/mitata/src/cli.mjs";

const properties = {
  closed: {
    get() {
      return this._writableState ? this._writableState.closed : false;
    },
  },
  destroyed: {
    get() {
      return this._writableState ? this._writableState.destroyed : false;
    },
    set(value) {
      if (this._writableState) {
        this._writableState.destroyed = value;
      }
    },
  },
  writable: {
    get() {
      const w = this._writableState;
      return (
        !!w &&
        w.writable !== false &&
        !w.destroyed &&
        !w.errored &&
        !w.ending &&
        !w.ended
      );
    },
    set(val) {
      if (this._writableState) {
        this._writableState.writable = !!val;
      }
    },
  },
  writableFinished: {
    get() {
      return this._writableState ? this._writableState.finished : false;
    },
  },
  writableObjectMode: {
    get() {
      return this._writableState ? this._writableState.objectMode : false;
    },
  },
  writableBuffer: {
    get() {
      return this._writableState && this._writableState.getBuffer();
    },
  },
  writableEnded: {
    get() {
      return this._writableState ? this._writableState.ending : false;
    },
  },
  writableNeedDrain: {
    get() {
      const wState = this._writableState;
      if (!wState) return false;
      return !wState.destroyed && !wState.ending && wState.needDrain;
    },
  },
  writableHighWaterMark: {
    get() {
      return this._writableState && this._writableState.highWaterMark;
    },
  },
  writableCorked: {
    get() {
      return this._writableState ? this._writableState.corked : 0;
    },
  },
  writableLength: {
    get() {
      return this._writableState && this._writableState.length;
    },
  },
  errored: {
    enumerable: false,
    get() {
      return this._writableState ? this._writableState.errored : null;
    },
  },
  writableAborted: {
    enumerable: false,
    get: function () {
      return !!(
        this._writableState.writable !== false &&
        (this._writableState.destroyed || this._writableState.errored) &&
        !this._writableState.finished
      );
    },
  },
};

var count = 10_000;

bench("Object.defineProperty x " + count, () => {
  const prop = {
    enumerable: false,
    get: function () {
      return !!(
        this._writableState.writable !== false &&
        (this._writableState.destroyed || this._writableState.errored) &&
        !this._writableState.finished
      );
    },
  };
  for (let i = 0; i < count; i++) {
    function Hey() {
      return this;
    }
    Object.defineProperty(Hey.prototype, "writableAborted", prop);
  }
});

bench("Object.defineProperties x " + count, () => {
  for (let i = 0; i < count; i++) {
    function Hey() {
      return this;
    }
    Object.defineProperties(Hey.prototype, properties);
  }
});

bench("(all the keys) Object.defineProperties x " + count, () => {
  var first;
  {
    function Hey() {
      return this;
    }
    Object.defineProperties(Hey.prototype, properties);
    first = Object.getOwnPropertyDescriptors(Hey.prototype);
  }

  for (let i = 0; i < count; i++) {
    function Hey() {
      return this;
    }
    Object.defineProperties(Hey.prototype, first);
  }
});

await run();
ac867e176f0dad7cc1a324173aa813eb55b601&follow=1'>[ci] collect statsGravatar FredKSchott 1-0/+1 2022-01-11[ci] yarn formatGravatar matthewp 1-4/+2 2022-01-11Fix: static-build with .md pages (#2363)Gravatar Matthew Phillips 6-3/+66 2022-01-11Restore accessibility check on docs site (#2362)Gravatar Jonathan Neal 2-14/+281 2022-01-11chore: remove www (#2361)Gravatar Nate Moore 87-3240/+11 2022-01-11Fix build output in static build mode (#2358)Gravatar Matthew Phillips 3-1/+16 2022-01-11Fix renderer-solid (fix #2336) (#2359)Gravatar toSayNothing 2-1/+6 2022-01-11[ci] collect statsGravatar FredKSchott 1-0/+1 2022-01-10Use smooth scrolling with reduced motion has no preference (#2355)Gravatar Jonathan Neal 1-3/+7 2022-01-10move changeset to run after build, no test required (#2341)Gravatar Fred K. Schott 1-2/+2 2022-01-10Note that Astro also supports `<Fragment>` syntax (#2354)Gravatar Zade Viggers 1-16/+18 2022-01-10smooth scroll behavior property added (#2256)Gravatar Divyamrit 1-1/+3 2022-01-10Add Astro Blog RSS feed (#2301)Gravatar Rafael Bardini 2-3/+20 2022-01-10Update Cloudflare Pages guide (#2345)Gravatar Jacob Rask 1-2/+2 2022-01-10[ci] update lockfile (#2351)Gravatar Fred K. Schott 1-116/+116 2022-01-10Update instructions for the monorepo (#2274)Gravatar Caleb Jasik 1-5/+12 2022-01-10Fix Astro Preview Pathing Issues (#2338)Gravatar Jonathan Neal 5-144/+150 2022-01-10[ci] collect statsGravatar FredKSchott 1-0/+1 2022-01-09[ci] collect statsGravatar FredKSchott 1-0/+1 2022-01-08[ci] update lockfile (#2344)Gravatar Fred K. Schott 1-33/+33 2022-01-08Fix sitemap.xml page urls (#2335)Gravatar Jonathan Neal 4-4/+8 2022-01-08[ci] collect statsGravatar FredKSchott 1-0/+1 2022-01-07Create .git-blame-ignore-revs (#2254)Gravatar Jonathan Neal 2-0/+8 2022-01-07Fix issue with plugins running twice in dev and build (#2323)Gravatar Jonathan Neal 2-2/+5 2022-01-07[ci] yarn formatGravatar matthewp 1-8/+8 2022-01-07[ci] release (#2339)astro@0.22.9Gravatar github-actions[bot] 28-39/+40 2022-01-07[ci] yarn formatGravatar matthewp 3-7/+8 2022-01-07Handle loading the Code package in the static build (#2337)Gravatar Matthew Phillips 8-4/+87 2022-01-07[ci] update lockfile (#2334)Gravatar Fred K. Schott 1-154/+154 2022-01-07[ci] yarn formatGravatar matthewp 1-8/+8 2022-01-07[ci] release (#2333)astro@0.22.8Gravatar github-actions[bot] 28-39/+40 2022-01-07[ci] collect statsGravatar FredKSchott 1-0/+1 2022-01-06[ci] yarn formatGravatar matthewp 4-54/+54 2022-01-06[ci] update lockfile (#2327)Gravatar Fred K. Schott 1-58/+64 2022-01-06Fix subpath support regressions (#2330)Gravatar Matthew Phillips 12-22/+566 2022-01-06[ci] yarn formatGravatar natemoo-re 1-2/+2 2022-01-06Added "IntelliSense for TypeScript" (#2326)astro@0.22.7Gravatar Morritz 1-0/+17 2022-01-06[ci] collect statsGravatar FredKSchott 1-0/+1 2022-01-06[ci] yarn formatGravatar FredKSchott 1-8/+8 2022-01-05[ci] release (#2320)Gravatar github-actions[bot] 31-54/+46 2022-01-05chore: update compiler (#2324)Gravatar Nate Moore 3-5/+10