αž›αž€αŸ’αžαžαžŽαŸ’αžŒαž“αŸ…αž€αŸ’αž“αž»αž„ Go αž“αž·αž„αž›αž€αŸ’αžαžŽαŸˆαž–αž·αžŸαŸαžŸαžšαž”αžŸαŸ‹αž–αž½αž€αž‚αŸαŸ”

αžαžΎβ€‹αž’αŸ’αž“αž€β€‹αž‚αž·αžβ€‹αžαžΆβ€‹αž‡αž˜αŸ’αžšαžΎαžŸβ€‹αž‘αžΆαŸ†αž„β€‹αž–αžΈαžšβ€‹αž“αŸαŸ‡β€‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹β€‹αž›αž€αŸ’αžαžαžŽαŸ’αžŒβ€‹αž“αŸƒβ€‹αž€αžΆαžšβ€‹αžŸαžΆαž€αž›αŸ’αž”αž„β€‹αž“αŸ…β€‹αž€αŸ’αž“αž»αž„β€‹αžšαž„αŸ’αžœαž„αŸ‹β€‹αž˜αž½αž™β€‹αž‚αžΊβ€‹αžŸαž˜αž˜αžΌαž›β€‹αž€αŸ’αž“αž»αž„β€‹αž€αžΆαžšβ€‹αž’αž“αž»αžœαžαŸ’αž?

		
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

αž”αž‘αž–αž·αžŸαŸ„αž’αž“αŸαžŸαžšαžŸαŸαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžšαž”αžŸαŸ‹αžαŸ’αž‰αž»αŸ†αž“αŸ…αž€αŸ’αž“αž»αž„ Go αž‚αžΊαž˜αž·αž“αž‘αžΌαž›αŸ†αž‘αžΌαž›αžΆαž™αž‘αŸ αž‚αŸ’αžšαžΆαž“αŸ‹αžαŸ‚αž‡αžΆαž„αž˜αž½αž™αž†αŸ’αž“αžΆαŸ†αž€αž“αŸ’αž›αŸ‡αž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡ αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αž”αŸ’αžšαžΎαžœαžΆ αž‘αŸ„αŸ‡αž”αžΈαž‡αžΆαž‰αžΉαž€αž‰αžΆαž”αŸ‹ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž‚αŸ„αž›αž”αŸ†αžŽαž„αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αžŸαž»αž‘αŸ’αž’αžŸαžΆαž’ (αž”αŸ’αžšαž αŸ‚αž›αž‡αžΆαž›αžΎαž€αž›αŸ‚αž„αžαŸ‚αž‚αž˜αŸ’αžšαŸ„αž„αž˜αž½αž™αž‘αžΆαž€αŸ‹αž‘αž„αž“αžΉαž„αžŸαŸαžœαžΆαž€αž˜αŸ’αž˜ 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
}

αžαŸ’αž‰αž»αŸ†αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžαŸαžŸαŸ’αžαž˜αŸ’αžαž„αž‘αŸ€αž... αž αžΎαž™αžαŸ’αž‰αž»αŸ†αžˆαž”αŸ‹αž™αž›αŸ‹αž’αŸ’αžœαžΈαž‘αžΆαŸ†αž„αž’αžŸαŸ‹ :)

αž–αŸαž›αžœαŸαž›αžΆαžŠαŸ‚αž›αž”αžΆαž“αž…αŸ†αžŽαžΆαž™αž›αžΎαž€αžΆαžšαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž˜αž·αž“αžαž»αžŸαž‚αŸ’αž“αžΆαž‘αŸ€αžαž‘αŸαžŠαŸ„αž™αž—αžΆαž‚αžšαž™/αž”αŸ’αžšαž—αžΆαž‚αž“αŸƒαž—αžΆαž‚αžšαž™ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžŠαŸ„αž™ 10..15% αžαŸ’αž‰αž»αŸ†αž”αž“αŸ’αžαŸ‚αž˜αž€αžΆαžšαžŸαžΆαž€αž›αŸ’αž”αž„αž…αŸ†αž“αž½αž“ 2 αž‘αŸ€αžαž™αŸ‰αžΆαž„αž†αžΆαž”αŸ‹αžšαž αŸαžŸαŸ–

		
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

αž€αž˜αŸ’αžšαž·αžαž’αžαž·αž”αžšαž˜αžΆαŸ– ៑្៨
αž›αž‘αŸ’αž’αž•αž› maxEvenDividing: 126 αžšαž™αŸˆαž–αŸαž› 116.0066ms
maxEvenDividing2 αž›αž‘αŸ’αž’αž•αž›αŸ– 126 αžšαž™αŸˆαž–αŸαž› 79.0045ms
αž›αž‘αŸ’αž’αž•αž› maxEvenConjunction: 126 αžšαž™αŸˆαž–αŸαž› 114.0065ms
αž›αž‘αŸ’αž’αž•αž› maxEvenConjunction2: 126 αžšαž™αŸˆαž–αŸαž› 83.0048ms

αž€αž˜αŸ’αžšαž·αžαž’αžαž·αž”αžšαž˜αžΆαŸ– ៑្៨
αž›αž‘αŸ’αž’αž•αž› maxEvenDividing: 254 αžšαž™αŸˆαž–αŸαž› 111.0063ms
maxEvenDividing2 αž›αž‘αŸ’αž’αž•αž›αŸ– 254 αžšαž™αŸˆαž–αŸαž› 77.0044ms
αž›αž‘αŸ’αž’αž•αž› maxEvenConjunction: 254 αžšαž™αŸˆαž–αŸαž› 110.0063ms
αž›αž‘αŸ’αž’αž•αž› maxEvenConjunction2: 254 αžšαž™αŸˆαž–αŸαž› 80.0046ms

αž€αž˜αŸ’αžšαž·αžαž’αžαž·αž”αžšαž˜αžΆαŸ– ៑្៨
αž›αž‘αŸ’αž’αž•αž› maxEvenDividing: 510 αžšαž™αŸˆαž–αŸαž› 114.0066ms
maxEvenDividing2 αž›αž‘αŸ’αž’αž•αž›αŸ– 510 αžšαž™αŸˆαž–αŸαž› 80.0045ms
αž›αž‘αŸ’αž’αž•αž› maxEvenConjunction: 510 αžšαž™αŸˆαž–αŸαž› 110.0063ms
αž›αž‘αŸ’αž’αž•αž› maxEvenConjunction2: 510 αžšαž™αŸˆαž–αŸαž› 80.0046ms

αž€αž˜αŸ’αžšαž·αžαž’αžαž·αž”αžšαž˜αžΆαŸ– ៑្៨
αž›αž‘αŸ’αž’αž•αž› maxEvenDividing: 1022 αžšαž™αŸˆαž–αŸαž› 109.0063ms
maxEvenDividing2 αž›αž‘αŸ’αž’αž•αž›αŸ– 1022 αžšαž™αŸˆαž–αŸαž› 77.0044ms
αž›αž‘αŸ’αž’αž•αž› maxEvenConjunction: 1022 αžšαž™αŸˆαž–αŸαž› 111.0063ms
αž›αž‘αŸ’αž’αž•αž› maxEvenConjunction2: 1022 αžšαž™αŸˆαž–αŸαž› 81.0047ms

αž€αž˜αŸ’αžšαž·αžαž’αžαž·αž”αžšαž˜αžΆαŸ– ៑្៨
αž›αž‘αŸ’αž’αž•αž› maxEvenDividing: 2046 αžšαž™αŸˆαž–αŸαž› 114.0065ms
maxEvenDividing2 αž›αž‘αŸ’αž’αž•αž›αŸ– 2046 αžšαž™αŸˆαž–αŸαž› 79.0045ms
αž›αž‘αŸ’αž’αž•αž› maxEvenConjunction: 2046 αžšαž™αŸˆαž–αŸαž› 113.0065ms
αž›αž‘αŸ’αž’αž•αž› maxEvenConjunction2: 2046 αžšαž™αŸˆαž–αŸαž› 81.0046ms

αž€αž˜αŸ’αžšαž·αžαž’αžαž·αž”αžšαž˜αžΆαŸ– ៑្៨
αž›αž‘αŸ’αž’αž•αž› maxEvenDividing: 4094 αžšαž™αŸˆαž–αŸαž› 114.0065ms
maxEvenDividing2 αž›αž‘αŸ’αž’αž•αž›αŸ– 4094 αžšαž™αŸˆαž–αŸαž› 80.0046ms
αž›αž‘αŸ’αž’αž•αž› maxEvenConjunction: 4094 αžšαž™αŸˆαž–αŸαž› 111.0063ms
αž›αž‘αŸ’αž’αž•αž› maxEvenConjunction2: 4094 αžšαž™αŸˆαž–αŸαž› 78.0045ms

αž€αž˜αŸ’αžšαž·αžαž’αžαž·αž”αžšαž˜αžΆαŸ– ៑្៨
αž›αž‘αŸ’αž’αž•αž› maxEvenDividing: 8190 αžšαž™αŸˆαž–αŸαž› 107.0062ms
maxEvenDividing2 αž›αž‘αŸ’αž’αž•αž›αŸ– 8190 αžšαž™αŸˆαž–αŸαž› 77.0044ms
αž›αž‘αŸ’αž’αž•αž› maxEvenConjunction: 8190 αžšαž™αŸˆαž–αŸαž› 111.0063ms
αž›αž‘αŸ’αž’αž•αž› maxEvenConjunction2: 8190 αžšαž™αŸˆαž–αŸαž› 77.0044ms

αž€αž˜αŸ’αžšαž·αžαž’αžαž·αž”αžšαž˜αžΆαŸ– ៑្៨
αž›αž‘αŸ’αž’αž•αž› maxEvenDividing: 16382 αžšαž™αŸˆαž–αŸαž› 109.0063ms
maxEvenDividing2 αž›αž‘αŸ’αž’αž•αž›αŸ– 16382 αžšαž™αŸˆαž–αŸαž› 77.0044ms
αž›αž‘αŸ’αž’αž•αž› maxEvenConjunction: 16382 αžšαž™αŸˆαž–αŸαž› 108.0062ms
αž›αž‘αŸ’αž’αž•αž› maxEvenConjunction2: 16382 αžšαž™αŸˆαž–αŸαž› 77.0044ms

αž€αž˜αŸ’αžšαž·αžαž’αžαž·αž”αžšαž˜αžΆαŸ– ៑្៨
αž›αž‘αŸ’αž’αž•αž› maxEvenDividing: 32766 αžšαž™αŸˆαž–αŸαž› 112.0064ms
maxEvenDividing2 αž›αž‘αŸ’αž’αž•αž›αŸ– 32766 αžšαž™αŸˆαž–αŸαž› 77.0044ms
αž›αž‘αŸ’αž’αž•αž› maxEvenConjunction: 32766 αžšαž™αŸˆαž–αŸαž› 109.0062ms
αž›αž‘αŸ’αž’αž•αž› maxEvenConjunction2: 32766 αžšαž™αŸˆαž–αŸαž› 78.0045ms

αž€αž˜αŸ’αžšαž·αžαž’αžαž·αž”αžšαž˜αžΆαŸ– ៑្៨
αž›αž‘αŸ’αž’αž•αž› maxEvenDividing: 65534 αžšαž™αŸˆαž–αŸαž› 109.0062ms
maxEvenDividing2 αž›αž‘αŸ’αž’αž•αž›αŸ– 65534 αžšαž™αŸˆαž–αŸαž› 75.0043ms
αž›αž‘αŸ’αž’αž•αž› maxEvenConjunction: 65534 αžšαž™αŸˆαž–αŸαž› 109.0063ms
αž›αž‘αŸ’αž’αž•αž› maxEvenConjunction2: 65534 αžšαž™αŸˆαž–αŸαž› 79.0045ms

αž€αž˜αŸ’αžšαž·αžαž’αžαž·αž”αžšαž˜αžΆαŸ– ៑្៨
αž›αž‘αŸ’αž’αž•αž› maxEvenDividing: 131070 αžšαž™αŸˆαž–αŸαž› 108.0061ms
maxEvenDividing2 αž›αž‘αŸ’αž’αž•αž›αŸ– 131070 αžšαž™αŸˆαž–αŸαž› 76.0044ms
αž›αž‘αŸ’αž’αž•αž› maxEvenConjunction: 131070 αžšαž™αŸˆαž–αŸαž› 110.0063ms
αž›αž‘αŸ’αž’αž•αž› maxEvenConjunction2: 131070 αžšαž™αŸˆαž–αŸαž› 80.0046ms

αž€αž˜αŸ’αžšαž·αžαž’αžαž·αž”αžšαž˜αžΆαŸ– ៑្៨
αž›αž‘αŸ’αž’αž•αž› maxEvenDividing: 262142 αžšαž™αŸˆαž–αŸαž› 110.0063ms
maxEvenDividing2 αž›αž‘αŸ’αž’αž•αž›αŸ– 262142 αžšαž™αŸˆαž–αŸαž› 76.0044ms
αž›αž‘αŸ’αž’αž•αž› maxEvenConjunction: 262142 αžšαž™αŸˆαž–αŸαž› 107.0061ms
αž›αž‘αŸ’αž’αž•αž› maxEvenConjunction2: 262142 αžšαž™αŸˆαž–αŸαž› 78.0044ms

αž€αž˜αŸ’αžšαž·αžαž’αžαž·αž”αžšαž˜αžΆαŸ– ៑្៨
αž›αž‘αŸ’αž’αž•αž› maxEvenDividing: 524286 αžšαž™αŸˆαž–αŸαž› 109.0062ms
maxEvenDividing2 αž›αž‘αŸ’αž’αž•αž›αŸ– 524286 αžšαž™αŸˆαž–αŸαž› 78.0045ms
αž›αž‘αŸ’αž’αž•αž› maxEvenConjunction: 524286 αžšαž™αŸˆαž–αŸαž› 109.0062ms
αž›αž‘αŸ’αž’αž•αž› maxEvenConjunction2: 524286 αžšαž™αŸˆαž–αŸαž› 80.0046ms

αž€αž˜αŸ’αžšαž·αžαž’αžαž·αž”αžšαž˜αžΆαŸ– ៑្៨
αž›αž‘αŸ’αž’αž•αž› maxEvenDividing: 1048574 αžšαž™αŸˆαž–αŸαž› 109.0063ms
maxEvenDividing2 αž›αž‘αŸ’αž’αž•αž›αŸ– 1048574 αžšαž™αŸˆαž–αŸαž› 80.0045ms
αž›αž‘αŸ’αž’αž•αž› maxEvenConjunction: 1048574 αžšαž™αŸˆαž–αŸαž› 114.0066ms
αž›αž‘αŸ’αž’αž•αž› maxEvenConjunction2: 1048574 αžšαž™αŸˆαž–αŸαž› 78.0044ms

αž€αž˜αŸ’αžšαž·αžαž’αžαž·αž”αžšαž˜αžΆαŸ– ៑្៨
αž›αž‘αŸ’αž’αž•αž› maxEvenDividing: 2097150 αžšαž™αŸˆαž–αŸαž› 111.0064ms
maxEvenDividing2 αž›αž‘αŸ’αž’αž•αž›αŸ– 2097150 αžšαž™αŸˆαž–αŸαž› 79.0045ms
αž›αž‘αŸ’αž’αž•αž› maxEvenConjunction: 2097150 αžšαž™αŸˆαž–αŸαž› 112.0064ms
αž›αž‘αŸ’αž’αž•αž› maxEvenConjunction2: 2097150 αžšαž™αŸˆαž–αŸαž› 77.0044ms

αž€αž˜αŸ’αžšαž·αžαž’αžαž·αž”αžšαž˜αžΆαŸ– ៑្៨
αž›αž‘αŸ’αž’αž•αž› maxEvenDividing: 4194302 αžšαž™αŸˆαž–αŸαž› 111.0063ms
maxEvenDividing2 αž›αž‘αŸ’αž’αž•αž›αŸ– 4194302 αžšαž™αŸˆαž–αŸαž› 78.0045ms
αž›αž‘αŸ’αž’αž•αž› maxEvenConjunction: 4194302 αžšαž™αŸˆαž–αŸαž› 111.0063ms
αž›αž‘αŸ’αž’αž•αž› maxEvenConjunction2: 4194302 αžšαž™αŸˆαž–αŸαž› 77.0044ms

αž€αž˜αŸ’αžšαž·αžαž’αžαž·αž”αžšαž˜αžΆαŸ– ៑្៨
αž›αž‘αŸ’αž’αž•αž› maxEvenDividing: 8388606 αžšαž™αŸˆαž–αŸαž› 109.0062ms
maxEvenDividing2 αž›αž‘αŸ’αž’αž•αž›αŸ– 8388606 αžšαž™αŸˆαž–αŸαž› 78.0045ms
αž›αž‘αŸ’αž’αž•αž› maxEvenConjunction: 8388606 αžšαž™αŸˆαž–αŸαž› 114.0065ms
αž›αž‘αŸ’αž’αž•αž› maxEvenConjunction2: 8388606 αžšαž™αŸˆαž–αŸαž› 78.0045ms

αž€αž˜αŸ’αžšαž·αžαž’αžαž·αž”αžšαž˜αžΆαŸ– ៑្៨
αž›αž‘αŸ’αž’αž•αž› maxEvenDividing: 16777214 αžšαž™αŸˆαž–αŸαž› 109.0062ms
maxEvenDividing2 αž›αž‘αŸ’αž’αž•αž›αŸ– 16777214 αžšαž™αŸˆαž–αŸαž› 77.0044ms
αž›αž‘αŸ’αž’αž•αž› maxEvenConjunction: 16777214 αžšαž™αŸˆαž–αŸαž› 109.0063ms
αž›αž‘αŸ’αž’αž•αž› maxEvenConjunction2: 16777214 αžšαž™αŸˆαž–αŸαž› 77.0044ms

αž€αž˜αŸ’αžšαž·αžαž’αžαž·αž”αžšαž˜αžΆαŸ– ៑្៨
αž›αž‘αŸ’αž’αž•αž› maxEvenDividing: 33554430 αžšαž™αŸˆαž–αŸαž› 113.0065ms
maxEvenDividing2 αž›αž‘αŸ’αž’αž•αž›αŸ– 33554430 αžšαž™αŸˆαž–αŸαž› 78.0045ms
αž›αž‘αŸ’αž’αž•αž› maxEvenConjunction: 33554430 αžšαž™αŸˆαž–αŸαž› 110.0063ms
αž›αž‘αŸ’αž’αž•αž› maxEvenConjunction2: 33554430 αžšαž™αŸˆαž–αŸαž› 80.0045ms

αž€αž˜αŸ’αžšαž·αžαž’αžαž·αž”αžšαž˜αžΆαŸ– ៑្៨
αž›αž‘αŸ’αž’αž•αž› maxEvenDividing: 67108860 αžšαž™αŸˆαž–αŸαž› 112.0064ms
maxEvenDividing2 αž›αž‘αŸ’αž’αž•αž›αŸ– 67108860 αžšαž™αŸˆαž–αŸαž› 77.0044ms
αž›αž‘αŸ’αž’αž•αž› maxEvenConjunction: 67108860 αžšαž™αŸˆαž–αŸαž› 112.0064ms
αž›αž‘αŸ’αž’αž•αž› maxEvenConjunction2: 67108860 αžšαž™αŸˆαž–αŸαž› 80.0046ms

αž€αž˜αŸ’αžšαž·αžαž’αžαž·αž”αžšαž˜αžΆαŸ– ៑្៨
αž›αž‘αŸ’αž’αž•αž› maxEvenDividing: 134217726 αžšαž™αŸˆαž–αŸαž› 109.0063ms
maxEvenDividing2 αž›αž‘αŸ’αž’αž•αž›αŸ– 134217726 αžšαž™αŸˆαž–αŸαž› 78.0044ms
αž›αž‘αŸ’αž’αž•αž› maxEvenConjunction: 134217726 αžšαž™αŸˆαž–αŸαž› 114.0065ms
αž›αž‘αŸ’αž’αž•αž› maxEvenConjunction2: 134217726 αžšαž™αŸˆαž–αŸαž› 81.0047ms

αž€αž˜αŸ’αžšαž·αžαž’αžαž·αž”αžšαž˜αžΆαŸ– ៑្៨
αž›αž‘αŸ’αž’αž•αž› maxEvenDividing: 268435446 αžšαž™αŸˆαž–αŸαž› 111.0064ms
maxEvenDividing2 αž›αž‘αŸ’αž’αž•αž›αŸ– 268435446 αžšαž™αŸˆαž–αŸαž› 79.0045ms
αž›αž‘αŸ’αž’αž•αž› maxEvenConjunction: 268435446 αžšαž™αŸˆαž–αŸαž› 114.0065ms
αž›αž‘αŸ’αž’αž•αž› maxEvenConjunction2: 268435446 αžšαž™αŸˆαž–αŸαž› 79.0045ms

αž€αž˜αŸ’αžšαž·αžαž’αžαž·αž”αžšαž˜αžΆαŸ– ៑្៨
αž›αž‘αŸ’αž’αž•αž› maxEvenDividing: 536870910 αžšαž™αŸˆαž–αŸαž› 107.0062ms
maxEvenDividing2 αž›αž‘αŸ’αž’αž•αž›αŸ– 536870910 αžšαž™αŸˆαž–αŸαž› 76.0043ms
αž›αž‘αŸ’αž’αž•αž› maxEvenConjunction: 536870910 αžšαž™αŸˆαž–αŸαž› 109.0062ms
αž›αž‘αŸ’αž’αž•αž› maxEvenConjunction2: 536870910 αžšαž™αŸˆαž–αŸαž› 80.0046ms

αžαŸ’αž‰αž»αŸ†αž˜αž·αž“αž’αžΆαž…αžŸαŸ’αžœαŸ‚αž„αžšαž€αž€αžΆαžšαž–αž“αŸ’αž™αž›αŸ‹αž…αŸ’αž”αžΆαžŸαŸ‹αž›αžΆαžŸαŸ‹αžαžΆαž αŸαžαž»αž’αŸ’αžœαžΈαž”αžΆαž“αž‡αžΆαž€αž˜αŸ’αž˜αžœαž·αž’αžΈ Go compiler αž˜αž·αž“αž”αž„αŸ’αž€αžΎαž“αž”αŸ’αžšαžŸαž·αž‘αŸ’αž’αž—αžΆαž–αž€αžΌαžŠ αž αžΎαž™αžαŸ‚αž„αžαŸ‚αž–αž·αž“αž·αžαŸ’αž™αž˜αžΎαž›αž›αž€αŸ’αžαžαžŽαŸ’αžŒαž‘αžΈαž–αžΈαžš αž”αžΎαž‘αŸ„αŸ‡αž”αžΈαž‡αžΆαž‘αžΈαž˜αž½αž™αž˜αž·αž“αž–αž·αžαž€αŸαžŠαŸ„αž™αŸ” αž¬αž”αŸ’αžšαž αŸ‚αž›αž‡αžΆαž—αŸ’αž“αŸ‚αž€αžšαž”αžŸαŸ‹αžαŸ’αž‰αž»αŸ†αž‚αŸ’αžšαžΆαž“αŸ‹αžαŸ‚αž–αŸ’αžšαž·αž› αž αžΎαž™αžαŸ’αž‰αž»αŸ†αž˜αž·αž“αžƒαžΎαž‰αž˜αžΆαž“αž€αŸ†αž αž»αžŸαž…αŸ’αž”αžΆαžŸαŸ‹αž›αžΆαžŸαŸ‹αž‘αŸ? αž¬αžαžΎαž’αŸ’αž“αž€αžαŸ’αžšαžΌαžœαž€αžΆαžšαž•αŸ’αžαž›αŸ‹αž€αžΆαžšαžŽαŸ‚αž“αžΆαŸ†αž–αž·αžŸαŸαžŸαž˜αž½αž™αž…αŸ†αž“αž½αž“αžŠαž›αŸ‹αž’αŸ’αž“αž€αž…αž„αž€αŸ’αžšαž„? αžαŸ’αž‰αž»αŸ†β€‹αž“αžΉαž„β€‹αžšαžΈαž€αžšαžΆαž™β€‹αž…αŸ†αž–αŸ„αŸ‡β€‹αž˜αžαž·β€‹αžŠαŸ‚αž›β€‹αžŸαž˜αž αŸαžαž»αžŸαž˜αž•αž›αŸ”

PS: αž”αžΆαž‘/αž…αžΆαžŸ αžŠαžΎαž˜αŸ’αž”αžΈαž—αžΆαž–αžŸαž”αŸ’αž”αžΆαž™αžšαžΈαž€αžšαžΆαž™ αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αžΆαžšαž’αŸ’αžœαžΎαžαŸαžŸαŸ’αžαžŸαŸ’αžšαžŠαŸ€αž„αž‚αŸ’αž“αžΆαž“αŸ…αž›αžΎ Java 5 αž“αž·αž„ Java 7/8 - αž’αŸ’αžœαžΈαž‚αŸ’αžšαž”αŸ‹αž™αŸ‰αžΆαž„αž‚αžΊαž…αŸ’αž”αžΆαžŸαŸ‹ αž–αŸαž›αžœαŸαž›αžΆαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž‚αžΊαžŠαžΌαž…αž‚αŸ’αž“αžΆαŸ”

αž”αŸ’αžšαž—αž–: www.habr.com

αž”αž“αŸ’αžαŸ‚αž˜αž˜αžαž·αž™αŸ„αž”αž›αŸ‹