@@ -73,115 +73,6 @@ async function testMutual() {
7373 }
7474}
7575
76- async function testPerformance ( ) {
77- const loremIpsum = `Lorem ipsum dolor sit amet, consectetur adipiscing elit,
78- sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
79- Dui accumsan sit amet nulla facilisi morbi tempus iaculis urna.
80- Eget dolor morbi non arcu risus quis varius quam quisque.
81- Lacus viverra vitae congue eu consequat ac felis donec.
82- Amet porttitor eget dolor morbi non arcu.
83- Velit ut tortor pretium viverra suspendisse.
84- Mauris nunc congue nisi vitae suscipit tellus.
85- Amet nisl suscipit adipiscing bibendum est ultricies integer.
86- Sit amet dictum sit amet justo donec enim diam.
87- Condimentum mattis pellentesque id nibh tortor id aliquet lectus proin.
88- Diam in arcu cursus euismod quis viverra nibh.
89- ` ;
90-
91- const REPETITIONS = 10000 ;
92- const SAMPLE = 100 ;
93- const THRESHOLD = 81 ;
94-
95- function getLoremIpsumStream ( ) {
96- const readable = Readable ( {
97- objectMode : true ,
98- } ) ;
99- let i = 0 ;
100- readable . _read = ( ) => readable . push (
101- i ++ >= REPETITIONS ? null : loremIpsum
102- ) ;
103- return readable ;
104- }
105-
106- function oldWay ( ) {
107- const readable = new Readable ( {
108- objectMode : true ,
109- read : ( ) => {
110- this . resume ( ) ;
111- } ,
112- destroy : ( err , cb ) => {
113- this . off ( 'line' , lineListener ) ;
114- this . off ( 'close' , closeListener ) ;
115- this . close ( ) ;
116- cb ( err ) ;
117- } ,
118- } ) ;
119- const lineListener = ( input ) => {
120- if ( ! readable . push ( input ) ) {
121- // TODO(rexagod): drain to resume flow
122- this . pause ( ) ;
123- }
124- } ;
125- const closeListener = ( ) => {
126- readable . push ( null ) ;
127- } ;
128- const errorListener = ( err ) => {
129- readable . destroy ( err ) ;
130- } ;
131- this . on ( 'error' , errorListener ) ;
132- this . on ( 'line' , lineListener ) ;
133- this . on ( 'close' , closeListener ) ;
134- return readable [ Symbol . asyncIterator ] ( ) ;
135- }
136-
137- function getAvg ( mean , x , n ) {
138- return ( mean * n + x ) / ( n + 1 ) ;
139- }
140-
141- let totalTimeOldWay = 0 ;
142- let totalTimeNewWay = 0 ;
143- let totalCharsOldWay = 0 ;
144- let totalCharsNewWay = 0 ;
145- const linesOldWay = [ ] ;
146- const linesNewWay = [ ] ;
147-
148- for ( let time = 0 ; time < SAMPLE ; time ++ ) {
149- const rlOldWay = readline . createInterface ( {
150- input : getLoremIpsumStream ( ) ,
151- } ) ;
152- let currenttotalTimeOldWay = Date . now ( ) ;
153- for await ( const line of oldWay . call ( rlOldWay ) ) {
154- totalCharsOldWay += line . length ;
155- if ( time === 0 ) {
156- linesOldWay . push ( line ) ;
157- }
158- }
159- currenttotalTimeOldWay = Date . now ( ) - currenttotalTimeOldWay ;
160- totalTimeOldWay = getAvg ( totalTimeOldWay , currenttotalTimeOldWay , SAMPLE ) ;
161-
162- const rlNewWay = readline . createInterface ( {
163- input : getLoremIpsumStream ( ) ,
164- } ) ;
165- let currentTotalTimeNewWay = Date . now ( ) ;
166- for await ( const line of rlNewWay ) {
167- totalCharsNewWay += line . length ;
168- if ( time === 0 ) {
169- linesNewWay . push ( line ) ;
170- }
171- }
172- currentTotalTimeNewWay = Date . now ( ) - currentTotalTimeNewWay ;
173- totalTimeNewWay = getAvg ( totalTimeNewWay , currentTotalTimeNewWay , SAMPLE ) ;
174- }
175-
176- assert . strictEqual ( totalCharsOldWay , totalCharsNewWay ) ;
177- assert . strictEqual ( linesOldWay . length , linesNewWay . length ) ;
178- linesOldWay . forEach ( ( line , index ) =>
179- assert . strictEqual ( line , linesNewWay [ index ] )
180- ) ;
181- const percentage = totalTimeNewWay * 100 / totalTimeOldWay ;
182- assert . ok ( percentage <= THRESHOLD , `Failed: ${ totalTimeNewWay } isn't lesser than ${ THRESHOLD } % of ${ totalTimeOldWay } . Actual percentage: ${ percentage . toFixed ( 2 ) } %` ) ;
183- }
184-
18576async function testSlowStreamForLeaks ( ) {
18677 const message = 'a\nb\nc\n' ;
18778 const DELAY = 1 ;
@@ -225,6 +116,5 @@ async function testSlowStreamForLeaks() {
225116
226117testSimple ( )
227118 . then ( testMutual )
228- . then ( testPerformance )
229119 . then ( testSlowStreamForLeaks )
230120 . then ( common . mustCall ( ) ) ;
0 commit comments