Go рдорд╛ рд╕рд░реНрддрд╣рд░реВ рд░ рддрд┐рдиреАрд╣рд░реВрдХреЛ quirks

рдХреЗ рддрдкрд╛рдЗрдБ рд╕реЛрдЪреНрдиреБрд╣реБрдиреНрдЫ рдХрд┐ рд▓реВрдк рднрд┐рддреНрд░ рдкрд░реАрдХреНрд╖рдг рд╕рд░реНрддрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдпреА рджреБрдИ рд╡рд┐рдХрд▓реНрдкрд╣рд░реВ рдкреНрд░рджрд░реНрд╢рдирдорд╛ рдмрд░рд╛рдмрд░ рдЫрдиреН?

		
if a > b && c*2 > d {
	....
}
// ╨╕
if a <= b  { 
  continue;
}
if c*2 > d {
 ....
}


рдпреЛ рд╕рдмреИ "рдмреНрд░реЗрди рд╡рд╛рд░реНрдо-рдЕрдк" рдмрд╛рдЯ рд╕реБрд░реБ рднрдпреЛ; рдореИрд▓реЗ рдкреВрд░реНрдгрд╛рдВрдХ [-x....x] рдХреЛ рдПрд░реНрд░реЗрдорд╛ рд╕рдмреИрднрдиреНрджрд╛ рдареВрд▓реЛ рд╕рдо рд╕рдВрдЦреНрдпрд╛рдХреЛ рд▓рд╛рдЧрд┐ рдЗрд╖реНрдЯрддрдо рдЦреЛрдЬрдХреЛ рдЙрджрд╛рд╣рд░рдг рджрд┐рдиреБ рдкрд░реЗрдХреЛ рдерд┐рдпреЛред рдо рд╕реЛрдЪрд┐рд░рд╣реЗрдХреЛ рдерд┐рдПрдБ рдХрд┐ рдпрджрд┐ рдореИрд▓реЗ рд╕рдВрдЦреНрдпрд╛ рдмрд░рд╛рдмрд░ рдЫ рдХрд┐ рдЫреИрди рднрдиреЗрд░ рдкрддреНрддрд╛ рд▓рдЧрд╛рдЙрди 1 рджреНрд╡рд╛рд░рд╛ рддрд╛рд░реНрдХрд┐рдХ рдЧреБрдгрди рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрдорд╛ рдХрддрд┐ рд░рд╛рдореНрд░реЛ рдХрд╛рд░реНрдпрд╕рдореНрдкрд╛рджрди рд╣реБрдиреНрдЫред


//╤Г ╤З╨╡╤В╨╜╤Л╤Е ╤З╨╕╤Б╨╡╨╗ ╨┐╨╛╤Б╨╗╨╡╨┤╨╜╨╕╨╣ ╨▒╨╕╤В ╨▓╤Б╨╡╨│╨┤╨░ ╤А╨░╨▓╨╡╨╜ 0
value & 1 == 0
//vs ╨║╨╗╨░╤Б╤Б╨╕╤З╨╡╤Б╨║╨╕╨╣ ╨╝╨╡╤В╨╛╨┤
value % 2 == 0

рдЧреЛ рдорд╛ рдореЗрд░реЛ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдЩ рдЕрдиреБрднрд╡ рдзреЗрд░реИ рдлрд░рд╛рдХрд┐рд▓реЛ рдЫреИрди, рдбреЗрдв рд╡рд░реНрд╖ рднрдиреНрджрд╛ рдмрдвреА, рдореИрд▓реЗ рдпрд╕рд▓рд╛рдИ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрдВ, рдпрджреНрдпрдкрд┐ рдЕрдХреНрд╕рд░, рддрд░ рд╡рд┐рд╢реБрджреНрдз рд░реВрдкрдорд╛ рдЙрдкрдпреЛрдЧрд┐рддрд╛рд╡рд╛рджреА рдЙрджреНрджреЗрд╢реНрдпрдХрд╛ рд▓рд╛рдЧрд┐ (рд░рд╛рдореНрд░реЛ, рд╣реБрдирд╕рдХреНрдЫ рдЙрдЪреНрдЪ-рд▓реЛрдб http рд╕реЗрд╡рд╛рд╕рдБрдЧ рд╕рдореНрдмрдиреНрдзрд┐рдд рдПрдЙрдЯрд╛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдмрд╛рд╣реЗрдХ), рддреНрдпрд╕реИрд▓реЗ рдоред рдпрд╕рдХреЛ рд╕рд╛рде рд╕реБрд░реБ рднрдпреЛред GoLand рдЦреЛрд▓реНрдиреБрд╣реЛрд╕реН рд░ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдкрд░реАрдХреНрд╖рдг рд▓реЗрдЦреНрдиреБрд╣реЛрд╕реН


package main
import (
	"fmt"
	"log"
	"math"
	"math/rand"
	"time"
)
const size = 100000000 //math.MaxInt32*2
type Result struct {
	Name     string
	Duration time.Duration
	Value    int32
}

func main() {
	log.Println("initial array capacity: " + fmt.Sprint(size))
	var maxValue int32
        // ╨С╤Г╨┤╨╡╨╝ ╨▓╨░╤А╤М╨╕╤А╨╛╨▓╨░╤В╤М ╨┤╨╕╨░╨┐╨░╨╖╨╛╨╜ ╤З╨╕╤Б╨╡╨╗ ╨╛╤В ╨╝╨╕╨╜╨╕╨╝╨░╨╗╤М╨╜╨╛╨│╨╛ 
        // ╨┤╨╛ ╨╝╨░╨║╤Б╨╕╨╝╨░╨╗╤М╨╜╨╛╨│╨╛. ╨з╨╡╨╝ ╨╝╨╡╨╜╤М╤И╨╡ ╨┤╨╕╨░╨┐╨░╨╖╨╛╨╜, ╤В╨╡╨╝ ╨▒╨╛╨╗╤М╤И╨╡ 
        // ╨┐╤А╨╛╤Ж╨╡╤Б╤Б╨╛╤А╨╜╨╛╨│╨╛ ╨▓╤А╨╡╨╝╨╡╨╜╨╕ ╨▒╤Г╨┤╨╡╤В ╤Г╤Е╨╛╨┤╨╕╤В╤М ╨╜╨░ ╨╛╨┐╨╡╤А╨░╤Ж╨╕╤О 
        // ╤Б╤А╨░╨▓╨╜╨╡╨╜╨╕╤П ╤В╨╡╨║╤Г╤Й╨╡╨│╨╛ ╤З╨╕╤Б╨╗╨░, ╤Б ╤А╨░╨╜╨╡╨╡ ╨╜╨░╨╣╨┤╨╡╨╜╨╜╤Л╨╝ ╨╕ ╨╜╨░╨╛╨▒╨╛╤А╨╛╤В
	for maxValue = 128; maxValue < math.MaxInt32/2+1; maxValue = maxValue * 2 {
		test(maxValue)
	}
}

func test(maxValue int32) {
	log.Println("max threshold: " + fmt.Sprint(maxValue))
	arr := make([]int32, size)
	for i := range arr {
		arr[i] = rand.Int31n(maxValue)
                // ╨▓ ╤В╨╡╤Б╤В╨╛╨▓╤Л╤Е ╨┤╨░╨╜╨╜╤Л╤Е ╨╜╨░╨╝ ╨╜╤Г╨╢╨╜╤Л ╨╕ ╨╛╤В╤А╨╕╤Ж╨░╤В╨╡╨╗╤М╨╜╤Л╨╡ ╤З╨╕╤Б╨╗╨░ 
		sign := rand.Intn(2)
		if sign == 1 {
			arr[i] = -arr[i]
		}
	}

        // ╨╖╨░╨┐╤Г╤Б╨║╨░╨╡╨╝ ╤В╨╡╤Б╤В "╨┤╨╡╨╗╨╡╨╜╨╕╨╡ ╤Б ╨╛╤Б╤В╨░╤В╨║╨╛╨╝"
	result := maxEvenDividing("maxEvenDividing", arr)
	log.Printf(result.Name+"t result: "+fmt.Sprint(result.Value)+"ttduration %s", result.Duration)

        // ╨╖╨░╨┐╤Г╤Б╨║╨░╨╡╨╝ ╤В╨╡╤Б╤В "╨║╨╛╨╜╤К╤О╨╜╨║╤Ж╨╕╨╕"
	result = maxEvenConjunction("maxEvenConjunction", arr)
	log.Printf(result.Name+"t result: "+fmt.Sprint(result.Value)+"ttduration %s", result.Duration)
}

func maxEvenDividing(name string, arr []int32) Result {
	start := time.Now()
	var current int32 = math.MinInt32
	for _, value := range arr {
		if value > current && value%2 == 0 {
			current = value
		}
	}
	duration := time.Since(start)
	result := Result{name, duration, current}
	return result
}

func maxEvenConjunction(name string, arr []int32) Result {
	start := time.Now()
	var current int32 = math.MinInt32
	for _, value := range arr {
		if value > current && value&1 == 0 {
			current = value
		}
	}
	duration := time.Since(start)
	result := Result{name, duration, current}
	return result
}

рд╣рд╛рдореАрд▓реЗ рдПрдЙрдЯрд╛ рдирддрд┐рдЬрд╛ рдкрд╛рдЙрдБрдЫреМрдБ рдЬрд╕рд▓реЗ рджреЗрдЦрд╛рдЙрдБрдЫ рдХрд┐ рдереНрд░реЗрд╕рд╣реЛрд▓реНрдб рдЬрддрд┐ рдЙрдЪреНрдЪ рд╣реБрдиреНрдЫ, рдкреНрд░рджрд░реНрд╢рдирдорд╛ рдЙрддрд┐ рдиреИ рдЙрддрд╛рд░-рдЪрдврд╛рд╡ рджреЗрдЦрд╛рдкрд░реНрдЫред

рддреБрд▓рдирд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реНmax threshold: 128
maxEvenDividing result: 126 duration 116.0067ms
maxEvenConjunction result: 126 duration 116.0066ms

max threshold: 16384
maxEvenDividing result: 16382 duration 115.0066ms
maxEvenConjunction result: 16382 duration 111.0064ms

......

max threshold: 8388608
maxEvenDividing result: 8388606 duration 109.0063ms
maxEvenConjunction result: 8388606 duration 109.0062ms

max threshold: 16777216
maxEvenDividing result: 16777214 duration 108.0062ms
maxEvenConjunction result: 16777214 duration 109.0062ms

max threshold: 33554432
maxEvenDividing result: 33554430 duration 114.0066ms
maxEvenConjunction result: 33554430 duration 110.0063ms

max threshold: 67108864
maxEvenDividing result: 67108860 duration 111.0064ms
maxEvenConjunction result: 67108860 duration 109.0062ms

max threshold: 134217728
maxEvenDividing result: 134217726 duration 108.0062ms
maxEvenConjunction result: 134217726 duration 109.0063ms

max threshold: 268435456
maxEvenDividing result: 268435446 duration 111.0063ms
maxEvenConjunction result: 268435446 duration 110.0063ms

рдпреЛ рд╕реНрдкрд╖реНрдЯ рдЫ рдХрд┐ рдпрд╕ рдЕрд╡рд╕реНрдерд╛рдорд╛, рдмрд┐рднрд┐рдиреНрди рдереНрд░реЗрд╕рд╣реЛрд▓реНрдбрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рд╣рд╛рдореАрд╕рдБрдЧ рдкрд░реАрдХреНрд╖рдг рдбреЗрдЯрд╛рдХреЛ рд╡рд┐рднрд┐рдиреНрди рд╕реЗрдЯрд╣рд░реВ рдЫрдиреН, рдкреНрд░реЛрд╕реЗрд╕рд░ рд▓реЛрдб (рдореЗрд░реЛ i5-2540M рд▓реНрдпрд╛рдкрдЯрдкрдорд╛) рд▓рдЧрднрдЧ 20..30% рднрд┐рдиреНрди рд╣реБрдиреНрдЫ, GoLand рдмрд╛рдЯ рдЪрд▓рд┐рд░рд╣реЗрдХреЛ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд▓реЗ рдУрдЧрдЯреЗрдХреЛ рдореЗрдореЛрд░реА рдФрд╕рддрдорд╛ рд╣реБрдиреНрдЫред рд▓рдЧрднрдЧ 813MB - рдпрд╕рд▓реЗ рдкрд░рд┐рдгрд╛рдордХреЛ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдпрддрд╛рд▓рд╛рдИ рдкрдирд┐ рдЕрд╕рд░ рдЧрд░реНрдЫ, рддрдкрд╛рдИрдВрд▓реЗ рдбрд┐рд╕реНрдХрдорд╛ рдкрд░реАрдХреНрд╖рдг рдХреЗрд╕рд╣рд░реВ рдмрдЪрдд рдЧрд░реНрди рд░ рдкреНрд░рддреНрдпреЗрдХ рдереНрд░реЗрд╕рд╣реЛрд▓реНрдбрдХреЛ рд▓рд╛рдЧрд┐ рд╕рдмреИ рдкрд░реАрдХреНрд╖рдгрд╣рд░реВ рдПрдХ рдЕрд░реНрдХрд╛рдмрд╛рдЯ рдЕрд▓рдЧреНрдЧреИ рдЪрд▓рд╛рдЙрди рдЖрд╡рд╢реНрдпрдХ рдЫред

рд░ рдЕрдм, рдпреЛ рд╕рдмреИ рдХрд╕рд░реА рдиреНрдпреВрдирддрдо рд▓рд╛рдЧрддрдорд╛ рд▓рд╛рдЧреВ рдЧрд░реНрдиреЗ рдмрд╛рд░реЗ рд╕реЛрдЪреНрджреИ, рдо рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдкрдорд╛ рд╕рд░реНрдд рдЬрд╛рдБрдЪрд▓рд╛рдИ рд╕рдЪреНрдпрд╛рдЙрдБрдЫреБ

		
if value > current && value&1 == 0 {
	current = value
}

рдорд╛

		
if value <= current {
        continue;
}
if value&1 == 0 {
	current = value
}

рдо рдлреЗрд░рд┐ рдкрд░реАрдХреНрд╖рдгрд╣рд░реВ рдЪрд▓рд╛рдЙрдБрдЫреБ ... рд░ рдо рдХреЗрд╣рд┐ рдмреБрдЭреНрди рд░реЛрдХреНрдЫреБ :)

рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдирдорд╛ рдмрд┐рддрд╛рдПрдХреЛ рд╕рдордп рдкреНрд░рддрд┐рд╢рдд/рдкреНрд░рддрд┐рд╢рддрдХреЛ рдЕрдВрд╢рд▓реЗ рд╣реЛрдЗрди, рддрд░ резреж..резрел% рд▓реЗ рдлрд░рдХ рд╣реБрди рдерд╛рд▓реНрдЫред рдо рдЪрд╛рдБрдбреИ реи рдердк рдкрд░реАрдХреНрд╖рдгрд╣рд░реВ рдердкреНрдЫреБ:

		
func maxEvenDividing2(name string, arr []int32) Result {
	start := time.Now()
	var current int32 = math.MinInt32
	for _, value := range arr {
		if value <= current {
			continue
		}

		if value%2 == 0 {
			current = value
		}
	}
	duration := time.Since(start)
	result := Result{name, duration, current}
	return result
}

func maxEvenConjunction2(name string, arr []int32) Result {
	start := time.Now()
	var current int32 = math.MinInt32
	for _, value := range arr {
		if value <= current {
			continue
		}
		if value&1 == 0 {
			current = value
		}
	}
	duration := time.Since(start)
	result := Result{name, duration, current}
	return result
}

рдо рдпрд╕рд▓рд╛рдИ рдЪрд▓рд╛рдЙрдБрдЫреБ рд░ рдпреЛ рддрд╕реНрд╡реАрд░ рдкрд╛рдЙрдБрдЫреБ:рдкреНрд░рд╛рд░рдореНрднрд┐рдХ рд╕рд░рдгреА рдХреНрд╖рдорддрд╛: 100000000

рдЕрдзрд┐рдХрддрдо рдереНрд░реЗрд╕рд╣реЛрд▓реНрдб: 128
maxEvenDividing рдкрд░рд┐рдгрд╛рдо: 126 рдЕрд╡рдзрд┐ 116.0066ms
maxEvenDivding2 рдкрд░рд┐рдгрд╛рдо: 126 рдЕрд╡рдзрд┐ 79.0045ms
maxEvenConjunction рдкрд░рд┐рдгрд╛рдо: 126 рдЕрд╡рдзрд┐ 114.0065ms
maxEvenConjunction2 рдкрд░рд┐рдгрд╛рдо: 126 рдЕрд╡рдзрд┐ 83.0048ms

рдЕрдзрд┐рдХрддрдо рдереНрд░реЗрд╕рд╣реЛрд▓реНрдб: 256
maxEvenDividing рдкрд░рд┐рдгрд╛рдо: 254 рдЕрд╡рдзрд┐ 111.0063ms
maxEvenDivding2 рдкрд░рд┐рдгрд╛рдо: 254 рдЕрд╡рдзрд┐ 77.0044ms
maxEvenConjunction рдкрд░рд┐рдгрд╛рдо: 254 рдЕрд╡рдзрд┐ 110.0063ms
maxEvenConjunction2 рдкрд░рд┐рдгрд╛рдо: 254 рдЕрд╡рдзрд┐ 80.0046ms

рдЕрдзрд┐рдХрддрдо рдереНрд░реЗрд╕рд╣реЛрд▓реНрдб: 512
maxEvenDividing рдкрд░рд┐рдгрд╛рдо: 510 рдЕрд╡рдзрд┐ 114.0066ms
maxEvenDivding2 рдкрд░рд┐рдгрд╛рдо: 510 рдЕрд╡рдзрд┐ 80.0045ms
maxEvenConjunction рдкрд░рд┐рдгрд╛рдо: 510 рдЕрд╡рдзрд┐ 110.0063ms
maxEvenConjunction2 рдкрд░рд┐рдгрд╛рдо: 510 рдЕрд╡рдзрд┐ 80.0046ms

рдЕрдзрд┐рдХрддрдо рдереНрд░реЗрд╕рд╣реЛрд▓реНрдб: 1024
maxEvenDividing рдкрд░рд┐рдгрд╛рдо: 1022 рдЕрд╡рдзрд┐ 109.0063ms
maxEvenDivding2 рдкрд░рд┐рдгрд╛рдо: 1022 рдЕрд╡рдзрд┐ 77.0044ms
maxEvenConjunction рдкрд░рд┐рдгрд╛рдо: 1022 рдЕрд╡рдзрд┐ 111.0063ms
maxEvenConjunction2 рдкрд░рд┐рдгрд╛рдо: 1022 рдЕрд╡рдзрд┐ 81.0047ms

рдЕрдзрд┐рдХрддрдо рдереНрд░реЗрд╕рд╣реЛрд▓реНрдб: 2048
maxEvenDividing рдкрд░рд┐рдгрд╛рдо: 2046 рдЕрд╡рдзрд┐ 114.0065ms
maxEvenDivding2 рдкрд░рд┐рдгрд╛рдо: 2046 рдЕрд╡рдзрд┐ 79.0045ms
maxEvenConjunction рдкрд░рд┐рдгрд╛рдо: 2046 рдЕрд╡рдзрд┐ 113.0065ms
maxEvenConjunction2 рдкрд░рд┐рдгрд╛рдо: 2046 рдЕрд╡рдзрд┐ 81.0046ms

рдЕрдзрд┐рдХрддрдо рдереНрд░реЗрд╕рд╣реЛрд▓реНрдб: 4096
maxEvenDividing рдкрд░рд┐рдгрд╛рдо: 4094 рдЕрд╡рдзрд┐ 114.0065ms
maxEvenDivding2 рдкрд░рд┐рдгрд╛рдо: 4094 рдЕрд╡рдзрд┐ 80.0046ms
maxEvenConjunction рдкрд░рд┐рдгрд╛рдо: 4094 рдЕрд╡рдзрд┐ 111.0063ms
maxEvenConjunction2 рдкрд░рд┐рдгрд╛рдо: 4094 рдЕрд╡рдзрд┐ 78.0045ms

рдЕрдзрд┐рдХрддрдо рдереНрд░реЗрд╕рд╣реЛрд▓реНрдб: 8192
maxEvenDividing рдкрд░рд┐рдгрд╛рдо: 8190 рдЕрд╡рдзрд┐ 107.0062ms
maxEvenDivding2 рдкрд░рд┐рдгрд╛рдо: 8190 рдЕрд╡рдзрд┐ 77.0044ms
maxEvenConjunction рдкрд░рд┐рдгрд╛рдо: 8190 рдЕрд╡рдзрд┐ 111.0063ms
maxEvenConjunction2 рдкрд░рд┐рдгрд╛рдо: 8190 рдЕрд╡рдзрд┐ 77.0044ms

рдЕрдзрд┐рдХрддрдо рдереНрд░реЗрд╕рд╣реЛрд▓реНрдб: 16384
maxEvenDividing рдкрд░рд┐рдгрд╛рдо: 16382 рдЕрд╡рдзрд┐ 109.0063ms
maxEvenDivding2 рдкрд░рд┐рдгрд╛рдо: 16382 рдЕрд╡рдзрд┐ 77.0044ms
maxEvenConjunction рдкрд░рд┐рдгрд╛рдо: 16382 рдЕрд╡рдзрд┐ 108.0062ms
maxEvenConjunction2 рдкрд░рд┐рдгрд╛рдо: 16382 рдЕрд╡рдзрд┐ 77.0044ms

рдЕрдзрд┐рдХрддрдо рдереНрд░реЗрд╕рд╣реЛрд▓реНрдб: 32768
maxEvenDividing рдкрд░рд┐рдгрд╛рдо: 32766 рдЕрд╡рдзрд┐ 112.0064ms
maxEvenDivding2 рдкрд░рд┐рдгрд╛рдо: 32766 рдЕрд╡рдзрд┐ 77.0044ms
maxEvenConjunction рдкрд░рд┐рдгрд╛рдо: 32766 рдЕрд╡рдзрд┐ 109.0062ms
maxEvenConjunction2 рдкрд░рд┐рдгрд╛рдо: 32766 рдЕрд╡рдзрд┐ 78.0045ms

рдЕрдзрд┐рдХрддрдо рдереНрд░реЗрд╕рд╣реЛрд▓реНрдб: 65536
maxEvenDividing рдкрд░рд┐рдгрд╛рдо: 65534 рдЕрд╡рдзрд┐ 109.0062ms
maxEvenDivding2 рдкрд░рд┐рдгрд╛рдо: 65534 рдЕрд╡рдзрд┐ 75.0043ms
maxEvenConjunction рдкрд░рд┐рдгрд╛рдо: 65534 рдЕрд╡рдзрд┐ 109.0063ms
maxEvenConjunction2 рдкрд░рд┐рдгрд╛рдо: 65534 рдЕрд╡рдзрд┐ 79.0045ms

рдЕрдзрд┐рдХрддрдо рдереНрд░реЗрд╕рд╣реЛрд▓реНрдб: 131072
maxEvenDividing рдкрд░рд┐рдгрд╛рдо: 131070 рдЕрд╡рдзрд┐ 108.0061ms
maxEvenDivding2 рдкрд░рд┐рдгрд╛рдо: 131070 рдЕрд╡рдзрд┐ 76.0044ms
maxEvenConjunction рдкрд░рд┐рдгрд╛рдо: 131070 рдЕрд╡рдзрд┐ 110.0063ms
maxEvenConjunction2 рдкрд░рд┐рдгрд╛рдо: 131070 рдЕрд╡рдзрд┐ 80.0046ms

рдЕрдзрд┐рдХрддрдо рдереНрд░реЗрд╕рд╣реЛрд▓реНрдб: 262144
maxEvenDividing рдкрд░рд┐рдгрд╛рдо: 262142 рдЕрд╡рдзрд┐ 110.0063ms
maxEvenDivding2 рдкрд░рд┐рдгрд╛рдо: 262142 рдЕрд╡рдзрд┐ 76.0044ms
maxEvenConjunction рдкрд░рд┐рдгрд╛рдо: 262142 рдЕрд╡рдзрд┐ 107.0061ms
maxEvenConjunction2 рдкрд░рд┐рдгрд╛рдо: 262142 рдЕрд╡рдзрд┐ 78.0044ms

рдЕрдзрд┐рдХрддрдо рдереНрд░реЗрд╕рд╣реЛрд▓реНрдб: 524288
maxEvenDividing рдкрд░рд┐рдгрд╛рдо: 524286 рдЕрд╡рдзрд┐ 109.0062ms
maxEvenDivding2 рдкрд░рд┐рдгрд╛рдо: 524286 рдЕрд╡рдзрд┐ 78.0045ms
maxEvenConjunction рдкрд░рд┐рдгрд╛рдо: 524286 рдЕрд╡рдзрд┐ 109.0062ms
maxEvenConjunction2 рдкрд░рд┐рдгрд╛рдо: 524286 рдЕрд╡рдзрд┐ 80.0046ms

рдЕрдзрд┐рдХрддрдо рдереНрд░реЗрд╕рд╣реЛрд▓реНрдб: 1048576
maxEvenDividing рдкрд░рд┐рдгрд╛рдо: 1048574 рдЕрд╡рдзрд┐ 109.0063ms
maxEvenDivding2 рдкрд░рд┐рдгрд╛рдо: 1048574 рдЕрд╡рдзрд┐ 80.0045ms
maxEvenConjunction рдкрд░рд┐рдгрд╛рдо: 1048574 рдЕрд╡рдзрд┐ 114.0066ms
maxEvenConjunction2 рдкрд░рд┐рдгрд╛рдо: 1048574 рдЕрд╡рдзрд┐ 78.0044ms

рдЕрдзрд┐рдХрддрдо рдереНрд░реЗрд╕рд╣реЛрд▓реНрдб: 2097152
maxEvenDividing рдкрд░рд┐рдгрд╛рдо: 2097150 рдЕрд╡рдзрд┐ 111.0064ms
maxEvenDivding2 рдкрд░рд┐рдгрд╛рдо: 2097150 рдЕрд╡рдзрд┐ 79.0045ms
maxEvenConjunction рдкрд░рд┐рдгрд╛рдо: 2097150 рдЕрд╡рдзрд┐ 112.0064ms
maxEvenConjunction2 рдкрд░рд┐рдгрд╛рдо: 2097150 рдЕрд╡рдзрд┐ 77.0044ms

рдЕрдзрд┐рдХрддрдо рдереНрд░реЗрд╕рд╣реЛрд▓реНрдб: 4194304
maxEvenDividing рдкрд░рд┐рдгрд╛рдо: 4194302 рдЕрд╡рдзрд┐ 111.0063ms
maxEvenDivding2 рдкрд░рд┐рдгрд╛рдо: 4194302 рдЕрд╡рдзрд┐ 78.0045ms
maxEvenConjunction рдкрд░рд┐рдгрд╛рдо: 4194302 рдЕрд╡рдзрд┐ 111.0063ms
maxEvenConjunction2 рдкрд░рд┐рдгрд╛рдо: 4194302 рдЕрд╡рдзрд┐ 77.0044ms

рдЕрдзрд┐рдХрддрдо рдереНрд░реЗрд╕рд╣реЛрд▓реНрдб: 8388608
maxEvenDividing рдкрд░рд┐рдгрд╛рдо: 8388606 рдЕрд╡рдзрд┐ 109.0062ms
maxEvenDivding2 рдкрд░рд┐рдгрд╛рдо: 8388606 рдЕрд╡рдзрд┐ 78.0045ms
maxEvenConjunction рдкрд░рд┐рдгрд╛рдо: 8388606 рдЕрд╡рдзрд┐ 114.0065ms
maxEvenConjunction2 рдкрд░рд┐рдгрд╛рдо: 8388606 рдЕрд╡рдзрд┐ 78.0045ms

рдЕрдзрд┐рдХрддрдо рдереНрд░реЗрд╕рд╣реЛрд▓реНрдб: 16777216
maxEvenDividing рдкрд░рд┐рдгрд╛рдо: 16777214 рдЕрд╡рдзрд┐ 109.0062ms
maxEvenDivding2 рдкрд░рд┐рдгрд╛рдо: 16777214 рдЕрд╡рдзрд┐ 77.0044ms
maxEvenConjunction рдкрд░рд┐рдгрд╛рдо: 16777214 рдЕрд╡рдзрд┐ 109.0063ms
maxEvenConjunction2 рдкрд░рд┐рдгрд╛рдо: 16777214 рдЕрд╡рдзрд┐ 77.0044ms

рдЕрдзрд┐рдХрддрдо рдереНрд░реЗрд╕рд╣реЛрд▓реНрдб: 33554432
maxEvenDividing рдкрд░рд┐рдгрд╛рдо: 33554430 рдЕрд╡рдзрд┐ 113.0065ms
maxEvenDivding2 рдкрд░рд┐рдгрд╛рдо: 33554430 рдЕрд╡рдзрд┐ 78.0045ms
maxEvenConjunction рдкрд░рд┐рдгрд╛рдо: 33554430 рдЕрд╡рдзрд┐ 110.0063ms
maxEvenConjunction2 рдкрд░рд┐рдгрд╛рдо: 33554430 рдЕрд╡рдзрд┐ 80.0045ms

рдЕрдзрд┐рдХрддрдо рдереНрд░реЗрд╕рд╣реЛрд▓реНрдб: 67108864
maxEvenDividing рдкрд░рд┐рдгрд╛рдо: 67108860 рдЕрд╡рдзрд┐ 112.0064ms
maxEvenDivding2 рдкрд░рд┐рдгрд╛рдо: 67108860 рдЕрд╡рдзрд┐ 77.0044ms
maxEvenConjunction рдкрд░рд┐рдгрд╛рдо: 67108860 рдЕрд╡рдзрд┐ 112.0064ms
maxEvenConjunction2 рдкрд░рд┐рдгрд╛рдо: 67108860 рдЕрд╡рдзрд┐ 80.0046ms

рдЕрдзрд┐рдХрддрдо рдереНрд░реЗрд╕рд╣реЛрд▓реНрдб: 134217728
maxEvenDividing рдкрд░рд┐рдгрд╛рдо: 134217726 рдЕрд╡рдзрд┐ 109.0063ms
maxEvenDivding2 рдкрд░рд┐рдгрд╛рдо: 134217726 рдЕрд╡рдзрд┐ 78.0044ms
maxEvenConjunction рдкрд░рд┐рдгрд╛рдо: 134217726 рдЕрд╡рдзрд┐ 114.0065ms
maxEvenConjunction2 рдкрд░рд┐рдгрд╛рдо: 134217726 рдЕрд╡рдзрд┐ 81.0047ms

рдЕрдзрд┐рдХрддрдо рдереНрд░реЗрд╕рд╣реЛрд▓реНрдб: 268435456
maxEvenDividing рдкрд░рд┐рдгрд╛рдо: 268435446 рдЕрд╡рдзрд┐ 111.0064ms
maxEvenDivding2 рдкрд░рд┐рдгрд╛рдо: 268435446 рдЕрд╡рдзрд┐ 79.0045ms
maxEvenConjunction рдкрд░рд┐рдгрд╛рдо: 268435446 рдЕрд╡рдзрд┐ 114.0065ms
maxEvenConjunction2 рдкрд░рд┐рдгрд╛рдо: 268435446 рдЕрд╡рдзрд┐ 79.0045ms

рдЕрдзрд┐рдХрддрдо рдереНрд░реЗрд╕рд╣реЛрд▓реНрдб: 536870912
maxEvenDividing рдкрд░рд┐рдгрд╛рдо: 536870910 рдЕрд╡рдзрд┐ 107.0062ms
maxEvenDivding2 рдкрд░рд┐рдгрд╛рдо: 536870910 рдЕрд╡рдзрд┐ 76.0043ms
maxEvenConjunction рдкрд░рд┐рдгрд╛рдо: 536870910 рдЕрд╡рдзрд┐ 109.0062ms
maxEvenConjunction2 рдкрд░рд┐рдгрд╛рдо: 536870910 рдЕрд╡рдзрд┐ 80.0046ms

рдореИрд▓реЗ рд╕реНрдкрд╖реНрдЯ рд╡реНрдпрд╛рдЦреНрдпрд╛ рдлреЗрд▓рд╛ рдкрд╛рд░реНрди рд╕рдХрд┐рди рдХрд┐рди рдЧреЛ рдХрдореНрдкрд╛рдЗрд▓рд░рд▓реЗ рдХреЛрдб рдЕрдкреНрдЯрд┐рдорд╛рдЗрдЬ рдЧрд░реНрджреИрди рд░ рд╕рдзреИрдВ рджреЛрд╕реНрд░реЛ рд╕рд░реНрдд рдЬрд╛рдБрдЪ рдЧрд░реНрджрдЫ, рднрд▓реЗ рдкрдирд┐ рдкрд╣рд┐рд▓реЛ рдЧрд▓рдд рд╣реЛред рд╡рд╛ рд╕рд╛рдпрдж рдореЗрд░рд╛ рдЖрдБрдЦрд╛ рдзрдорд┐рд▓реЛ рдЫрдиреН рд░ рдо рдХреБрдиреИ рд╕реНрдкрд╖реНрдЯ рдЧрд▓реНрддреА рджреЗрдЦреНрджрд┐рди? рд╡рд╛ рддрдкрд╛рдИрдВрд▓реЗ рдХрдореНрдкрд╛рдЗрд▓рд░рд▓рд╛рдИ рдХреЗрд╣реА рд╡рд┐рд╢реЗрд╖ рдирд┐рд░реНрджреЗрд╢рдирд╣рд░реВ рдкреНрд░рджрд╛рди рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ? рд╕рд╛рдиреНрджрд░реНрднрд┐рдХ рдЯрд┐рдкреНрдкрдгреАрдХреЛ рд▓рд╛рдЧрд┐ рдо рдЦреБрд╕реА рд╣реБрдиреЗрдЫреБред

PS: рд╣реЛ, рдХреЗрд╡рд▓ рд░рдорд╛рдЗрд▓реЛрдХреЛ рд▓рд╛рдЧрд┐, рдореИрд▓реЗ Java 5 рд░ Java 7/8 рдорд╛ рд╕рдорд╛рди рдкрд░реАрдХреНрд╖рдгрд╣рд░реВ рдЪрд▓рд╛рдПрдБ - рд╕рдмреИ рдХреБрд░рд╛ рд╕реНрдкрд╖реНрдЯ рдЫ, рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕рдордп рд╕рдорд╛рди рдЫред

рд╕реНрд░реЛрдд: www.habr.com

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдердкреНрди