J'ai entendu Ă plusieurs reprises comment les programmeurs se moquaient des coĂ©quipiers qui Ă©crivaient du code lent. Des phrases dures et justes dans le style de «cet idiot a parcouru la collection quatre fois, bien qu'il aurait pu en ĂȘtre une», etc. Quand vous entendez cela, vous pensez immĂ©diatement - eh bien, tout est pour affaires, pourquoi faire des itĂ©rations inutiles? Pourquoi ne pouvez-vous pas apprendre quelques choses de base, comme le fonctionnement des expressions LINQ en C # et Ă©crire du code normal? Vous riez des gens stupides incompĂ©tents jusqu'Ă ce qu'ils se moquent de vous. Et croyez-moi, aucune connaissance en programmation ne vous Ă©pargnera une situation oĂč vous avez sans le savoir envie d'un algorithme quadratique au lieu d'un algorithme linĂ©aire.
Je ne sais pas si quelqu'un se moquait de mon code, mais je suis sĂ»r - plus d'une ou deux fois j'ai Ă©crit une solution cent fois plus lente qu'elle n'aurait pu l'ĂȘtre. Mais dans ces cas, j'ai dĂ©libĂ©rĂ©ment Ă©crit sous-optimal. Par exemple, en C #, il existe une boucle for et une mĂ©thode de collecte Select (dans d'autres langues, elle est plus souvent appelĂ©e map). La boucle est plus rapide, mais je trouve l'approche fonctionnelle plus esthĂ©tique - et je l'utilise. Je sais qu'il y a peu de donnĂ©es, il n'y aura pas de goulot d'Ă©tranglement et j'Ă©cris du code qui, Ă mon avis, est plus joli, plus lisible et donc meilleur. Il existe de nombreuses solutions de ce type en dĂ©veloppement - et je choisis d'Ă©crire du code productif uniquement lorsque je sais avec certitude que sinon, les prĂ©lĂšvements deviendront un problĂšme.
, -, , â . , , , . â LINQ . C# â yield â , , . â â , , . , , â .
- , yield, - . , LINQ . - , , , , . . LINQ â , .
â , . BenchmarkDotNet, Pro .NET Benchmarking, , , , , . , â .
, ? , .
Select â Select. , , , , , , .
, . " " â , . " ". , , .
, , â . . for select, , ? C#, , C# â . C++. . , , â . , , â ** . , .
, . , C#. . â , , â . , .
, . Queue, List â , . , , . â .
, . . â , . , , â , . , .
â â â, â â â , â , . , , , â . , â , , . , .
â . , ", C#, LINQ" , . , . â â â . , "yarn start" . , , . . , â â .
â . , , . â . , , , , , , . . , , . .
â , . , .
Il n'y a rien de mal que vous ayez choisi plus joli, mais pas plus rapide. Et il n'y a pas de tragédie quand vous ne saviez tout simplement pas que votre décision était super sous-optimale. Le problÚme commence lorsque vous dites que la productivité est une connerie et que vous laissez les individus le faire. Non frÚre. Apprendre à accélérer le code n'est pas le lot des nerds de la performance, cela fait partie de notre travail. Lorsque votre réticence à apprendre des choses complexes rend votre code à la fois lent et laid, alors vous avez de gros problÚmes.
Regardez mon podcast