[racket] Performance. How to disable contract checks?
Yes, option contracts should move into the mainstream library.
The point of option contracts is that you can program which parts you want to run, how often, and which parts you want turned off. I urge you to build your abstraction on top of option contracts. If you do, please report back on your experience.
-- Matthias
On Jun 2, 2014, at 4:20 PM, Roman Klochkov <kalimehtar at mail.ru> wrote:
> The problem is that, when debbugging, contract should be precise. For example, insert-in-sorted-queue may check that queue is orted before and after the function.
> But inserting the element is O(log n) and testing will be O(n).
>
> option contracts -- 1) unstable 2) should be turned off and on individually.
>
> For quick hack, I'll simply redefine contract-out and recompile all. But I propose something like two contracts: for debug and production modes.
>
>
> Mon, 2 Jun 2014 15:49:05 -0400 от Matthias Felleisen <matthias at ccs.neu.edu>:
>
> On Jun 2, 2014, at 3:42 PM, Roman Klochkov <kalimehtar at mail.ru> wrote:
>
> > Is there a way to disable all contract checks?
> >
> > Suppose, I debugged my program and sure that it is reliable. I disable debugging, but as I understand, contracts are still checked in every function.
> > But I want to maximize the performance of my program. Is there a way to do that or I have to manually hack racket/contract/base to do that?
>
>
> No.
>
> ;; ---
>
> Programmers who disable assertion checking as they are deploying software are like people who wear life vests on land when they learn about the theory of sailing and take them off as soon as they board the boat for practical exercises on the water. -- somebody famous
>
> ;; ---
>
> You will need to define a version of provide and/or contract-out that throws away contracts based on a switch.
>
> Or you check out option contracts and use those.
>
> -- Matthias
>
>
>
> --
> Roman Klochkov