[Pharo-project] about and:and: and and:
hi nicolas I saw that you apply some automatic refactoring in squeak about and:and: -> and: and I wanted to know. Is and: more optimized than and:and: (I imagine that) but I would like to know for sure. Stef
The NewCompiler optimizes #and:and:and: to an optimized and nested #and:. The standard compiler does a normal message send with block activations for each condition and thus is dead slow. Lukas 2010/1/4 Stéphane Ducasse <stephane.ducasse@inria.fr>:
hi nicolas
I saw that you apply some automatic refactoring in squeak about and:and: -> and: and I wanted to know. Is and: more optimized than and:and: (I imagine that) but I would like to know for sure.
Stef
_______________________________________________ Pharo-project mailing list Pharo-project@lists.gforge.inria.fr http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
-- Lukas Renggli http://www.lukas-renggli.ch
My point was: - these messages are Squeak specific - they are slow (didn't knew about NewCompiler...) - do they really add some value over nested and: ? Nicolas 2010/1/4 Lukas Renggli <renggli@gmail.com>:
The NewCompiler optimizes #and:and:and: to an optimized and nested #and:. The standard compiler does a normal message send with block activations for each condition and thus is dead slow.
Lukas
2010/1/4 Stéphane Ducasse <stephane.ducasse@inria.fr>:
hi nicolas
I saw that you apply some automatic refactoring in squeak about and:and: -> and: and I wanted to know. Is and: more optimized than and:and: (I imagine that) but I would like to know for sure.
Stef
_______________________________________________ Pharo-project mailing list Pharo-project@lists.gforge.inria.fr http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
-- Lukas Renggli http://www.lukas-renggli.ch
_______________________________________________ Pharo-project mailing list Pharo-project@lists.gforge.inria.fr http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Nicolas I would love to get the latest version cleanup automatically If by accident a huge slice would be committed into the pharoInbox. what the others think? Stef On Jan 4, 2010, at 9:26 AM, Nicolas Cellier wrote:
My point was: - these messages are Squeak specific - they are slow (didn't knew about NewCompiler...) - do they really add some value over nested and: ?
Nicolas
2010/1/4 Lukas Renggli <renggli@gmail.com>:
The NewCompiler optimizes #and:and:and: to an optimized and nested #and:. The standard compiler does a normal message send with block activations for each condition and thus is dead slow.
Lukas
2010/1/4 Stéphane Ducasse <stephane.ducasse@inria.fr>:
hi nicolas
I saw that you apply some automatic refactoring in squeak about and:and: -> and: and I wanted to know. Is and: more optimized than and:and: (I imagine that) but I would like to know for sure.
Stef
_______________________________________________ Pharo-project mailing list Pharo-project@lists.gforge.inria.fr http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
-- Lukas Renggli http://www.lukas-renggli.ch
_______________________________________________ Pharo-project mailing list Pharo-project@lists.gforge.inria.fr http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
_______________________________________________ Pharo-project mailing list Pharo-project@lists.gforge.inria.fr http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
From Slime:
RBParseTreeRewriter new replace: '``@expr1 and: [ | `@temp2 | ``@expr2 ] and: [ | `@temp3 | ``@expr3 ]' with: '``@expr1 and: [ | `@temp2 | ``@expr2 and: [ | `@temp3 | ``@expr3 ] ]'; replace: '``@expr1 and: [ | `@temp2 | ``@expr2 ] and: [ | `@temp3 | ``@expr3 ] and: [ | `@temp4 | ``@expr4 ]' with: '``@expr1 and: [ | `@temp2 | ``@expr2 and: [ | `@temp3 | ``@expr3 and: [ | `@temp4 | ``@expr4 ] ] ]'; replace: '``@expr1 and: [ | `@temp2 | ``@expr2 ] and: [ | `@temp3 | ``@expr3 ] and: [ | `@temp4 | ``@expr4 ] and: [ | `@temp5 | ``@expr5 ]' with: '``@expr1 and: [ | `@temp2 | ``@expr2 and: [ | `@temp3 | ``@expr3 and: [ | `@temp4 | ``@expr4 and: [ | `@temp5 | ``@expr5 ] ] ] ]'; replace: '``@expr1 or: [ | `@temp2 | ``@expr2 ] or: [ | `@temp3 | ``@expr3 ]' with: '``@expr1 or: [ | `@temp2 | ``@expr2 or: [ | `@temp3 | ``@expr3 ] ]'; replace: '``@expr1 or: [ | `@temp2 | ``@expr2 ] or: [ | `@temp3 | ``@expr3 ] or: [ | `@temp4 | ``@expr4 ]' with: '``@expr1 or: [ | `@temp2 | ``@expr2 or: [ | `@temp3 | ``@expr3 or: [ | `@temp4 | ``@expr4 ] ] ]'; replace: '``@expr1 or: [ | `@temp2 | ``@expr2 ] or: [ | `@temp3 | ``@expr3 ] or: [ | `@temp4 | ``@expr4 ] or: [ | `@temp5 | ``@expr5 ]' with: '``@expr1 or: [ | `@temp2 | ``@expr2 or: [ | `@temp3 | ``@expr3 or: [ | `@temp4 | ``@expr4 or: [ | `@temp5 | ``@expr5 ] ] ] ]'; replace: '``@expr1 or: [ | `@temp2 | ``@expr2 ] or: [ | `@temp3 | ``@expr3 ] or: [ | `@temp4 | ``@expr4 ] or: [ | `@temp5 | ``@expr5 ] or: [ | `@temp6 | ``@expr6 ]' with: '``@expr1 or: [ | `@temp2 | ``@expr2 or: [ | `@temp3 | ``@expr3 or: [ | `@temp4 | ``@expr4 or: [ | `@temp5 | ``@expr5 or: [ | `@temp6 | ``@expr6 ] ] ] ] ]'; yourself 2010/1/4 Stéphane Ducasse <stephane.ducasse@inria.fr>:
Nicolas I would love to get the latest version cleanup automatically If by accident a huge slice would be committed into the pharoInbox. what the others think?
Stef
On Jan 4, 2010, at 9:26 AM, Nicolas Cellier wrote:
My point was: - these messages are Squeak specific - they are slow (didn't knew about NewCompiler...) - do they really add some value over nested and: ?
Nicolas
2010/1/4 Lukas Renggli <renggli@gmail.com>:
The NewCompiler optimizes #and:and:and: to an optimized and nested #and:. The standard compiler does a normal message send with block activations for each condition and thus is dead slow.
Lukas
2010/1/4 Stéphane Ducasse <stephane.ducasse@inria.fr>:
hi nicolas
I saw that you apply some automatic refactoring in squeak about and:and: -> and: and I wanted to know. Is and: more optimized than and:and: (I imagine that) but I would like to know for sure.
Stef
_______________________________________________ Pharo-project mailing list Pharo-project@lists.gforge.inria.fr http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
-- Lukas Renggli http://www.lukas-renggli.ch
_______________________________________________ Pharo-project mailing list Pharo-project@lists.gforge.inria.fr http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
_______________________________________________ Pharo-project mailing list Pharo-project@lists.gforge.inria.fr http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
_______________________________________________ Pharo-project mailing list Pharo-project@lists.gforge.inria.fr http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
-- Lukas Renggli http://www.lukas-renggli.ch
If this preserves formatting, proceed, else, beware. Given there were few senders in trunk, my change was manual, not automatic (Steph didn't you mean systematic ?). Nicolas 2010/1/4 Lukas Renggli <renggli@gmail.com>:
From Slime:
RBParseTreeRewriter new     replace: '``@expr1 and: [ | `@temp2 | ``@expr2 ] and: [ | `@temp3 | ``@expr3 ]'             with: '``@expr1 and: [ | `@temp2 | ``@expr2 and: [ | `@temp3 | ``@expr3 ] ]';         replace: '``@expr1 and: [ | `@temp2 | ``@expr2 ] and: [ | `@temp3 | ``@expr3 ] and: [ | `@temp4 | ``@expr4 ]'             with: '``@expr1 and: [ | `@temp2 | ``@expr2 and: [ | `@temp3 | ``@expr3 and: [ | `@temp4 | ``@expr4 ] ] ]';         replace: '``@expr1 and: [ | `@temp2 | ``@expr2 ] and: [ | `@temp3 | ``@expr3 ] and: [ | `@temp4 | ``@expr4 ] and: [  | `@temp5 | ``@expr5 ]'             with: '``@expr1 and: [ | `@temp2 | ``@expr2 and: [ | `@temp3 | ``@expr3 and: [ | `@temp4 | ``@expr4 and: [ | `@temp5 | ``@expr5 ] ] ] ]';         replace: '``@expr1 or: [ | `@temp2 | ``@expr2 ] or: [ | `@temp3 | ``@expr3 ]'             with: '``@expr1 or: [ | `@temp2 | ``@expr2 or: [ | `@temp3 | ``@expr3 ] ]';         replace: '``@expr1 or: [ | `@temp2 | ``@expr2 ] or: [ | `@temp3 | ``@expr3 ] or: [ | `@temp4 | ``@expr4 ]'             with: '``@expr1 or: [ | `@temp2 | ``@expr2 or: [ | `@temp3 | ``@expr3 or: [ | `@temp4 | ``@expr4 ] ] ]';         replace: '``@expr1 or: [ | `@temp2 | ``@expr2 ] or: [ | `@temp3 | ``@expr3 ] or: [ | `@temp4 | ``@expr4 ] or: [ | `@temp5 | ``@expr5 ]'             with: '``@expr1 or: [ | `@temp2 | ``@expr2 or: [ | `@temp3 | ``@expr3 or: [ | `@temp4 | ``@expr4 or: [ | `@temp5 | ``@expr5 ] ] ] ]';         replace: '``@expr1 or: [ | `@temp2 | ``@expr2 ] or: [ | `@temp3 | ``@expr3 ] or: [ | `@temp4 | ``@expr4 ] or: [ | `@temp5 | ``@expr5 ] or: [ | `@temp6 | ``@expr6 ]'             with: '``@expr1 or: [ | `@temp2 | ``@expr2 or: [ | `@temp3 | ``@expr3 or: [ | `@temp4 | ``@expr4 or: [ | `@temp5 | ``@expr5 or: [ | `@temp6 | ``@expr6 ] ] ] ] ]';         yourself
2010/1/4 Stéphane Ducasse <stephane.ducasse@inria.fr>:
Nicolas I would love to get the latest version cleanup automatically If by accident a huge slice would be committed into the pharoInbox. what the others think?
Stef
On Jan 4, 2010, at 9:26 AM, Nicolas Cellier wrote:
My point was: - these messages are Squeak specific - they are slow (didn't knew about NewCompiler...) - do they really add some value over nested and: ?
Nicolas
2010/1/4 Lukas Renggli <renggli@gmail.com>:
The NewCompiler optimizes #and:and:and: to an optimized and nested #and:. The standard compiler does a normal message send with block activations for each condition and thus is dead slow.
Lukas
2010/1/4 Stéphane Ducasse <stephane.ducasse@inria.fr>:
hi nicolas
I saw that you apply some automatic refactoring in squeak about and:and: -> and: and I wanted to know. Is and: more optimized than and:and: (I imagine that) but I would like to know for sure.
Stef
_______________________________________________ Pharo-project mailing list Pharo-project@lists.gforge.inria.fr http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
-- Lukas Renggli http://www.lukas-renggli.ch
_______________________________________________ Pharo-project mailing list Pharo-project@lists.gforge.inria.fr http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
_______________________________________________ Pharo-project mailing list Pharo-project@lists.gforge.inria.fr http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
_______________________________________________ Pharo-project mailing list Pharo-project@lists.gforge.inria.fr http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
-- Lukas Renggli http://www.lukas-renggli.ch
_______________________________________________ Pharo-project mailing list Pharo-project@lists.gforge.inria.fr http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
This very likely does not preserve the formatting. The rewrite completely restructures the AST. Lukas 2010/1/4 Nicolas Cellier <nicolas.cellier.aka.nice@gmail.com>:
If this preserves formatting, proceed, else, beware. Given there were few senders in trunk, my change was manual, not automatic (Steph didn't you mean systematic ?).
Nicolas
2010/1/4 Lukas Renggli <renggli@gmail.com>:
From Slime:
RBParseTreeRewriter new     replace: '``@expr1 and: [ | `@temp2 | ``@expr2 ] and: [ | `@temp3 | ``@expr3 ]'             with: '``@expr1 and: [ | `@temp2 | ``@expr2 and: [ | `@temp3 | ``@expr3 ] ]';         replace: '``@expr1 and: [ | `@temp2 | ``@expr2 ] and: [ | `@temp3 | ``@expr3 ] and: [ | `@temp4 | ``@expr4 ]'             with: '``@expr1 and: [ | `@temp2 | ``@expr2 and: [ | `@temp3 | ``@expr3 and: [ | `@temp4 | ``@expr4 ] ] ]';         replace: '``@expr1 and: [ | `@temp2 | ``@expr2 ] and: [ | `@temp3 | ``@expr3 ] and: [ | `@temp4 | ``@expr4 ] and: [  | `@temp5 | ``@expr5 ]'             with: '``@expr1 and: [ | `@temp2 | ``@expr2 and: [ | `@temp3 | ``@expr3 and: [ | `@temp4 | ``@expr4 and: [ | `@temp5 | ``@expr5 ] ] ] ]';         replace: '``@expr1 or: [ | `@temp2 | ``@expr2 ] or: [ | `@temp3 | ``@expr3 ]'             with: '``@expr1 or: [ | `@temp2 | ``@expr2 or: [ | `@temp3 | ``@expr3 ] ]';         replace: '``@expr1 or: [ | `@temp2 | ``@expr2 ] or: [ | `@temp3 | ``@expr3 ] or: [ | `@temp4 | ``@expr4 ]'             with: '``@expr1 or: [ | `@temp2 | ``@expr2 or: [ | `@temp3 | ``@expr3 or: [ | `@temp4 | ``@expr4 ] ] ]';         replace: '``@expr1 or: [ | `@temp2 | ``@expr2 ] or: [ | `@temp3 | ``@expr3 ] or: [ | `@temp4 | ``@expr4 ] or: [ | `@temp5 | ``@expr5 ]'             with: '``@expr1 or: [ | `@temp2 | ``@expr2 or: [ | `@temp3 | ``@expr3 or: [ | `@temp4 | ``@expr4 or: [ | `@temp5 | ``@expr5 ] ] ] ]';         replace: '``@expr1 or: [ | `@temp2 | ``@expr2 ] or: [ | `@temp3 | ``@expr3 ] or: [ | `@temp4 | ``@expr4 ] or: [ | `@temp5 | ``@expr5 ] or: [ | `@temp6 | ``@expr6 ]'             with: '``@expr1 or: [ | `@temp2 | ``@expr2 or: [ | `@temp3 | ``@expr3 or: [ | `@temp4 | ``@expr4 or: [ | `@temp5 | ``@expr5 or: [ | `@temp6 | ``@expr6 ] ] ] ] ]';         yourself
2010/1/4 Stéphane Ducasse <stephane.ducasse@inria.fr>:
Nicolas I would love to get the latest version cleanup automatically If by accident a huge slice would be committed into the pharoInbox. what the others think?
Stef
On Jan 4, 2010, at 9:26 AM, Nicolas Cellier wrote:
My point was: - these messages are Squeak specific - they are slow (didn't knew about NewCompiler...) - do they really add some value over nested and: ?
Nicolas
2010/1/4 Lukas Renggli <renggli@gmail.com>:
The NewCompiler optimizes #and:and:and: to an optimized and nested #and:. The standard compiler does a normal message send with block activations for each condition and thus is dead slow.
Lukas
2010/1/4 Stéphane Ducasse <stephane.ducasse@inria.fr>:
hi nicolas
I saw that you apply some automatic refactoring in squeak about and:and: -> and: and I wanted to know. Is and: more optimized than and:and: (I imagine that) but I would like to know for sure.
Stef
_______________________________________________ Pharo-project mailing list Pharo-project@lists.gforge.inria.fr http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
-- Lukas Renggli http://www.lukas-renggli.ch
_______________________________________________ Pharo-project mailing list Pharo-project@lists.gforge.inria.fr http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
_______________________________________________ Pharo-project mailing list Pharo-project@lists.gforge.inria.fr http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
_______________________________________________ Pharo-project mailing list Pharo-project@lists.gforge.inria.fr http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
-- Lukas Renggli http://www.lukas-renggli.ch
_______________________________________________ Pharo-project mailing list Pharo-project@lists.gforge.inria.fr http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
_______________________________________________ Pharo-project mailing list Pharo-project@lists.gforge.inria.fr http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
-- Lukas Renggli http://www.lukas-renggli.ch
You did that manually :) Ok so may be since there are only few senders I can do it too :) Stef
If this preserves formatting, proceed, else, beware. Given there were few senders in trunk, my change was manual, not automatic (Steph didn't you mean systematic ?).
Nicolas
2010/1/4 Lukas Renggli <renggli@gmail.com>:
From Slime:
RBParseTreeRewriter new replace: '``@expr1 and: [ | `@temp2 | ``@expr2 ] and: [ | `@temp3 | ``@expr3 ]' with: '``@expr1 and: [ | `@temp2 | ``@expr2 and: [ | `@temp3 | ``@expr3 ] ]'; replace: '``@expr1 and: [ | `@temp2 | ``@expr2 ] and: [ | `@temp3 | ``@expr3 ] and: [ | `@temp4 | ``@expr4 ]' with: '``@expr1 and: [ | `@temp2 | ``@expr2 and: [ | `@temp3 | ``@expr3 and: [ | `@temp4 | ``@expr4 ] ] ]'; replace: '``@expr1 and: [ | `@temp2 | ``@expr2 ] and: [ | `@temp3 | ``@expr3 ] and: [ | `@temp4 | ``@expr4 ] and: [ | `@temp5 | ``@expr5 ]' with: '``@expr1 and: [ | `@temp2 | ``@expr2 and: [ | `@temp3 | ``@expr3 and: [ | `@temp4 | ``@expr4 and: [ | `@temp5 | ``@expr5 ] ] ] ]'; replace: '``@expr1 or: [ | `@temp2 | ``@expr2 ] or: [ | `@temp3 | ``@expr3 ]' with: '``@expr1 or: [ | `@temp2 | ``@expr2 or: [ | `@temp3 | ``@expr3 ] ]'; replace: '``@expr1 or: [ | `@temp2 | ``@expr2 ] or: [ | `@temp3 | ``@expr3 ] or: [ | `@temp4 | ``@expr4 ]' with: '``@expr1 or: [ | `@temp2 | ``@expr2 or: [ | `@temp3 | ``@expr3 or: [ | `@temp4 | ``@expr4 ] ] ]'; replace: '``@expr1 or: [ | `@temp2 | ``@expr2 ] or: [ | `@temp3 | ``@expr3 ] or: [ | `@temp4 | ``@expr4 ] or: [ | `@temp5 | ``@expr5 ]' with: '``@expr1 or: [ | `@temp2 | ``@expr2 or: [ | `@temp3 | ``@expr3 or: [ | `@temp4 | ``@expr4 or: [ | `@temp5 | ``@expr5 ] ] ] ]'; replace: '``@expr1 or: [ | `@temp2 | ``@expr2 ] or: [ | `@temp3 | ``@expr3 ] or: [ | `@temp4 | ``@expr4 ] or: [ | `@temp5 | ``@expr5 ] or: [ | `@temp6 | ``@expr6 ]' with: '``@expr1 or: [ | `@temp2 | ``@expr2 or: [ | `@temp3 | ``@expr3 or: [ | `@temp4 | ``@expr4 or: [ | `@temp5 | ``@expr5 or: [ | `@temp6 | ``@expr6 ] ] ] ] ]'; yourself
2010/1/4 Stéphane Ducasse <stephane.ducasse@inria.fr>:
Nicolas I would love to get the latest version cleanup automatically If by accident a huge slice would be committed into the pharoInbox. what the others think?
Stef
On Jan 4, 2010, at 9:26 AM, Nicolas Cellier wrote:
My point was: - these messages are Squeak specific - they are slow (didn't knew about NewCompiler...) - do they really add some value over nested and: ?
Nicolas
2010/1/4 Lukas Renggli <renggli@gmail.com>:
The NewCompiler optimizes #and:and:and: to an optimized and nested #and:. The standard compiler does a normal message send with block activations for each condition and thus is dead slow.
Lukas
2010/1/4 Stéphane Ducasse <stephane.ducasse@inria.fr>:
hi nicolas
I saw that you apply some automatic refactoring in squeak about and:and: -> and: and I wanted to know. Is and: more optimized than and:and: (I imagine that) but I would like to know for sure.
Stef
_______________________________________________ Pharo-project mailing list Pharo-project@lists.gforge.inria.fr http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
-- Lukas Renggli http://www.lukas-renggli.ch
_______________________________________________ Pharo-project mailing list Pharo-project@lists.gforge.inria.fr http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
_______________________________________________ Pharo-project mailing list Pharo-project@lists.gforge.inria.fr http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
_______________________________________________ Pharo-project mailing list Pharo-project@lists.gforge.inria.fr http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
-- Lukas Renggli http://www.lukas-renggli.ch
_______________________________________________ Pharo-project mailing list Pharo-project@lists.gforge.inria.fr http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
_______________________________________________ Pharo-project mailing list Pharo-project@lists.gforge.inria.fr http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Thanks lukas so we could get rid of them :) Stef On Jan 4, 2010, at 9:12 AM, Lukas Renggli wrote:
The NewCompiler optimizes #and:and:and: to an optimized and nested #and:. The standard compiler does a normal message send with block activations for each condition and thus is dead slow.
Lukas
2010/1/4 Stéphane Ducasse <stephane.ducasse@inria.fr>:
hi nicolas
I saw that you apply some automatic refactoring in squeak about and:and: -> and: and I wanted to know. Is and: more optimized than and:and: (I imagine that) but I would like to know for sure.
Stef
_______________________________________________ Pharo-project mailing list Pharo-project@lists.gforge.inria.fr http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
-- Lukas Renggli http://www.lukas-renggli.ch
_______________________________________________ Pharo-project mailing list Pharo-project@lists.gforge.inria.fr http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
participants (3)
-
Lukas Renggli -
Nicolas Cellier -
Stéphane Ducasse