For datetype BIT, is | faster than OR?

In most programming languages, bit-fiddling is a way to save storage and increase performance. Although storing items as bits can save storage in a relational database, it is not a route to improved performance.

Basically, bit operators -- as with most other functions and operators -- impede the optimizer and prevent the use of indexes and partition pruning. They also generally incur a bit of overhead, just because CPUs are designed to handle bunches of bits at a time (think 4-bytes or 8-bytes) rather than individual bits.

Then there is the question of what performance would be saved. If the query is doing a full table scan, the primary cost is reading the data. Not filtering the data. In the time it takes to read a data page into memory, lots and lots and lots and lots of comparisons on bits or integers can be made -- way more than 3 per row.

So, even if there were a difference in performance, it would be very hard to measure. I do encourage you to try. I would imagine that the two versions are essentially equivalent, each having three bit operations and some booleans thrown in.