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

เช—เซ‹เชฎเชพเช‚ เชฎเชพเชฐเซ‹ เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎเชฟเช‚เช— เช…เชจเซเชญเชต เชฌเชนเซ เชตเซเชฏเชพเชชเช• เชจเชฅเซ€, เชฎเชพเชคเซเชฐ เชฆเซ‹เชข เชตเชฐเซเชทเชฅเซ€, เชฎเซ‡เช‚ เชคเซ‡เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซเชฏเซ‹ เช›เซ‡, เชœเซ‹เช•เซ‡ เช˜เชฃเซ€ เชตเชพเชฐ, เชชเชฐเช‚เชคเซ เชธเช‚เชชเซ‚เชฐเซเชฃเชชเชฃเซ‡ เช‰เชชเชฏเซ‹เช—เชฟเชคเชพเชตเชพเชฆเซ€ เชนเซ‡เชคเซเช“ เชฎเชพเชŸเซ‡ (เชธเชพเชฐเซเช‚, เช•เชฆเชพเชš เช‰เชšเซเชš-เชฒเซ‹เชก 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

เชฎเชนเชคเซเชคเชฎ เชฅเซเชฐเซ‡เชถเซ‹เชฒเซเชก: 128
maxEvenDividing เชชเชฐเชฟเชฃเชพเชฎ: 126 เช…เชตเชงเชฟ 116.0066ms
maxEvenDiving2 เชชเชฐเชฟเชฃเชพเชฎ: 126 เช…เชตเชงเชฟ 79.0045ms
maxEvenConjunction เชชเชฐเชฟเชฃเชพเชฎ: 126 เช…เชตเชงเชฟ 114.0065ms
maxEvenConjunction2 เชชเชฐเชฟเชฃเชพเชฎ: 126 เช…เชตเชงเชฟ 83.0048ms

เชฎเชนเชคเซเชคเชฎ เชฅเซเชฐเซ‡เชถเซ‹เชฒเซเชก: 256
maxEvenDividing เชชเชฐเชฟเชฃเชพเชฎ: 254 เช…เชตเชงเชฟ 111.0063ms
maxEvenDiving2 เชชเชฐเชฟเชฃเชพเชฎ: 254 เช…เชตเชงเชฟ 77.0044ms
maxEvenConjunction เชชเชฐเชฟเชฃเชพเชฎ: 254 เช…เชตเชงเชฟ 110.0063ms
maxEvenConjunction2 เชชเชฐเชฟเชฃเชพเชฎ: 254 เช…เชตเชงเชฟ 80.0046ms

เชฎเชนเชคเซเชคเชฎ เชฅเซเชฐเซ‡เชถเซ‹เชฒเซเชก: 512
maxEvenDividing เชชเชฐเชฟเชฃเชพเชฎ: 510 เช…เชตเชงเชฟ 114.0066ms
maxEvenDiving2 เชชเชฐเชฟเชฃเชพเชฎ: 510 เช…เชตเชงเชฟ 80.0045ms
maxEvenConjunction เชชเชฐเชฟเชฃเชพเชฎ: 510 เช…เชตเชงเชฟ 110.0063ms
maxEvenConjunction2 เชชเชฐเชฟเชฃเชพเชฎ: 510 เช…เชตเชงเชฟ 80.0046ms

เชฎเชนเชคเซเชคเชฎ เชฅเซเชฐเซ‡เชถเซ‹เชฒเซเชก: 1024
maxEvenDividing เชชเชฐเชฟเชฃเชพเชฎ: 1022 เช…เชตเชงเชฟ 109.0063ms
maxEvenDiving2 เชชเชฐเชฟเชฃเชพเชฎ: 1022 เช…เชตเชงเชฟ 77.0044ms
maxEvenConjunction เชชเชฐเชฟเชฃเชพเชฎ: 1022 เช…เชตเชงเชฟ 111.0063ms
maxEvenConjunction2 เชชเชฐเชฟเชฃเชพเชฎ: 1022 เช…เชตเชงเชฟ 81.0047ms

เชฎเชนเชคเซเชคเชฎ เชฅเซเชฐเซ‡เชถเซ‹เชฒเซเชก: 2048
maxEvenDividing เชชเชฐเชฟเชฃเชพเชฎ: 2046 เช…เชตเชงเชฟ 114.0065ms
maxEvenDiving2 เชชเชฐเชฟเชฃเชพเชฎ: 2046 เช…เชตเชงเชฟ 79.0045ms
maxEvenConjunction เชชเชฐเชฟเชฃเชพเชฎ: 2046 เช…เชตเชงเชฟ 113.0065ms
maxEvenConjunction2 เชชเชฐเชฟเชฃเชพเชฎ: 2046 เช…เชตเชงเชฟ 81.0046ms

เชฎเชนเชคเซเชคเชฎ เชฅเซเชฐเซ‡เชถเซ‹เชฒเซเชก: 4096
maxEvenDividing เชชเชฐเชฟเชฃเชพเชฎ: 4094 เช…เชตเชงเชฟ 114.0065ms
maxEvenDiving2 เชชเชฐเชฟเชฃเชพเชฎ: 4094 เช…เชตเชงเชฟ 80.0046ms
maxEvenConjunction เชชเชฐเชฟเชฃเชพเชฎ: 4094 เช…เชตเชงเชฟ 111.0063ms
maxEvenConjunction2 เชชเชฐเชฟเชฃเชพเชฎ: 4094 เช…เชตเชงเชฟ 78.0045ms

เชฎเชนเชคเซเชคเชฎ เชฅเซเชฐเซ‡เชถเซ‹เชฒเซเชก: 8192
maxEvenDividing เชชเชฐเชฟเชฃเชพเชฎ: 8190 เช…เชตเชงเชฟ 107.0062ms
maxEvenDiving2 เชชเชฐเชฟเชฃเชพเชฎ: 8190 เช…เชตเชงเชฟ 77.0044ms
maxEvenConjunction เชชเชฐเชฟเชฃเชพเชฎ: 8190 เช…เชตเชงเชฟ 111.0063ms
maxEvenConjunction2 เชชเชฐเชฟเชฃเชพเชฎ: 8190 เช…เชตเชงเชฟ 77.0044ms

เชฎเชนเชคเซเชคเชฎ เชฅเซเชฐเซ‡เชถเซ‹เชฒเซเชก: 16384
maxEvenDividing เชชเชฐเชฟเชฃเชพเชฎ: 16382 เช…เชตเชงเชฟ 109.0063ms
maxEvenDiving2 เชชเชฐเชฟเชฃเชพเชฎ: 16382 เช…เชตเชงเชฟ 77.0044ms
maxEvenConjunction เชชเชฐเชฟเชฃเชพเชฎ: 16382 เช…เชตเชงเชฟ 108.0062ms
maxEvenConjunction2 เชชเชฐเชฟเชฃเชพเชฎ: 16382 เช…เชตเชงเชฟ 77.0044ms

เชฎเชนเชคเซเชคเชฎ เชฅเซเชฐเซ‡เชถเซ‹เชฒเซเชก: 32768
maxEvenDividing เชชเชฐเชฟเชฃเชพเชฎ: 32766 เช…เชตเชงเชฟ 112.0064ms
maxEvenDiving2 เชชเชฐเชฟเชฃเชพเชฎ: 32766 เช…เชตเชงเชฟ 77.0044ms
maxEvenConjunction เชชเชฐเชฟเชฃเชพเชฎ: 32766 เช…เชตเชงเชฟ 109.0062ms
maxEvenConjunction2 เชชเชฐเชฟเชฃเชพเชฎ: 32766 เช…เชตเชงเชฟ 78.0045ms

เชฎเชนเชคเซเชคเชฎ เชฅเซเชฐเซ‡เชถเซ‹เชฒเซเชก: 65536
maxEvenDividing เชชเชฐเชฟเชฃเชพเชฎ: 65534 เช…เชตเชงเชฟ 109.0062ms
maxEvenDiving2 เชชเชฐเชฟเชฃเชพเชฎ: 65534 เช…เชตเชงเชฟ 75.0043ms
maxEvenConjunction เชชเชฐเชฟเชฃเชพเชฎ: 65534 เช…เชตเชงเชฟ 109.0063ms
maxEvenConjunction2 เชชเชฐเชฟเชฃเชพเชฎ: 65534 เช…เชตเชงเชฟ 79.0045ms

เชฎเชนเชคเซเชคเชฎ เชฅเซเชฐเซ‡เชถเซ‹เชฒเซเชก: 131072
maxEvenDividing เชชเชฐเชฟเชฃเชพเชฎ: 131070 เช…เชตเชงเชฟ 108.0061ms
maxEvenDiving2 เชชเชฐเชฟเชฃเชพเชฎ: 131070 เช…เชตเชงเชฟ 76.0044ms
maxEvenConjunction เชชเชฐเชฟเชฃเชพเชฎ: 131070 เช…เชตเชงเชฟ 110.0063ms
maxEvenConjunction2 เชชเชฐเชฟเชฃเชพเชฎ: 131070 เช…เชตเชงเชฟ 80.0046ms

เชฎเชนเชคเซเชคเชฎ เชฅเซเชฐเซ‡เชถเซ‹เชฒเซเชก: 262144
maxEvenDividing เชชเชฐเชฟเชฃเชพเชฎ: 262142 เช…เชตเชงเชฟ 110.0063ms
maxEvenDiving2 เชชเชฐเชฟเชฃเชพเชฎ: 262142 เช…เชตเชงเชฟ 76.0044ms
maxEvenConjunction เชชเชฐเชฟเชฃเชพเชฎ: 262142 เช…เชตเชงเชฟ 107.0061ms
maxEvenConjunction2 เชชเชฐเชฟเชฃเชพเชฎ: 262142 เช…เชตเชงเชฟ 78.0044ms

เชฎเชนเชคเซเชคเชฎ เชฅเซเชฐเซ‡เชถเซ‹เชฒเซเชก: 524288
maxEvenDividing เชชเชฐเชฟเชฃเชพเชฎ: 524286 เช…เชตเชงเชฟ 109.0062ms
maxEvenDiving2 เชชเชฐเชฟเชฃเชพเชฎ: 524286 เช…เชตเชงเชฟ 78.0045ms
maxEvenConjunction เชชเชฐเชฟเชฃเชพเชฎ: 524286 เช…เชตเชงเชฟ 109.0062ms
maxEvenConjunction2 เชชเชฐเชฟเชฃเชพเชฎ: 524286 เช…เชตเชงเชฟ 80.0046ms

เชฎเชนเชคเซเชคเชฎ เชฅเซเชฐเซ‡เชถเซ‹เชฒเซเชก: 1048576
maxEvenDividing เชชเชฐเชฟเชฃเชพเชฎ: 1048574 เช…เชตเชงเชฟ 109.0063ms
maxEvenDiving2 เชชเชฐเชฟเชฃเชพเชฎ: 1048574 เช…เชตเชงเชฟ 80.0045ms
maxEvenConjunction เชชเชฐเชฟเชฃเชพเชฎ: 1048574 เช…เชตเชงเชฟ 114.0066ms
maxEvenConjunction2 เชชเชฐเชฟเชฃเชพเชฎ: 1048574 เช…เชตเชงเชฟ 78.0044ms

เชฎเชนเชคเซเชคเชฎ เชฅเซเชฐเซ‡เชถเซ‹เชฒเซเชก: 2097152
maxEvenDividing เชชเชฐเชฟเชฃเชพเชฎ: 2097150 เช…เชตเชงเชฟ 111.0064ms
maxEvenDiving2 เชชเชฐเชฟเชฃเชพเชฎ: 2097150 เช…เชตเชงเชฟ 79.0045ms
maxEvenConjunction เชชเชฐเชฟเชฃเชพเชฎ: 2097150 เช…เชตเชงเชฟ 112.0064ms
maxEvenConjunction2 เชชเชฐเชฟเชฃเชพเชฎ: 2097150 เช…เชตเชงเชฟ 77.0044ms

เชฎเชนเชคเซเชคเชฎ เชฅเซเชฐเซ‡เชถเซ‹เชฒเซเชก: 4194304
maxEvenDividing เชชเชฐเชฟเชฃเชพเชฎ: 4194302 เช…เชตเชงเชฟ 111.0063ms
maxEvenDiving2 เชชเชฐเชฟเชฃเชพเชฎ: 4194302 เช…เชตเชงเชฟ 78.0045ms
maxEvenConjunction เชชเชฐเชฟเชฃเชพเชฎ: 4194302 เช…เชตเชงเชฟ 111.0063ms
maxEvenConjunction2 เชชเชฐเชฟเชฃเชพเชฎ: 4194302 เช…เชตเชงเชฟ 77.0044ms

เชฎเชนเชคเซเชคเชฎ เชฅเซเชฐเซ‡เชถเซ‹เชฒเซเชก: 8388608
maxEvenDividing เชชเชฐเชฟเชฃเชพเชฎ: 8388606 เช…เชตเชงเชฟ 109.0062ms
maxEvenDiving2 เชชเชฐเชฟเชฃเชพเชฎ: 8388606 เช…เชตเชงเชฟ 78.0045ms
maxEvenConjunction เชชเชฐเชฟเชฃเชพเชฎ: 8388606 เช…เชตเชงเชฟ 114.0065ms
maxEvenConjunction2 เชชเชฐเชฟเชฃเชพเชฎ: 8388606 เช…เชตเชงเชฟ 78.0045ms

เชฎเชนเชคเซเชคเชฎ เชฅเซเชฐเซ‡เชถเซ‹เชฒเซเชก: 16777216
maxEvenDividing เชชเชฐเชฟเชฃเชพเชฎ: 16777214 เช…เชตเชงเชฟ 109.0062ms
maxEvenDiving2 เชชเชฐเชฟเชฃเชพเชฎ: 16777214 เช…เชตเชงเชฟ 77.0044ms
maxEvenConjunction เชชเชฐเชฟเชฃเชพเชฎ: 16777214 เช…เชตเชงเชฟ 109.0063ms
maxEvenConjunction2 เชชเชฐเชฟเชฃเชพเชฎ: 16777214 เช…เชตเชงเชฟ 77.0044ms

เชฎเชนเชคเซเชคเชฎ เชฅเซเชฐเซ‡เชถเซ‹เชฒเซเชก: 33554432
maxEvenDividing เชชเชฐเชฟเชฃเชพเชฎ: 33554430 เช…เชตเชงเชฟ 113.0065ms
maxEvenDiving2 เชชเชฐเชฟเชฃเชพเชฎ: 33554430 เช…เชตเชงเชฟ 78.0045ms
maxEvenConjunction เชชเชฐเชฟเชฃเชพเชฎ: 33554430 เช…เชตเชงเชฟ 110.0063ms
maxEvenConjunction2 เชชเชฐเชฟเชฃเชพเชฎ: 33554430 เช…เชตเชงเชฟ 80.0045ms

เชฎเชนเชคเซเชคเชฎ เชฅเซเชฐเซ‡เชถเซ‹เชฒเซเชก: 67108864
maxEvenDividing เชชเชฐเชฟเชฃเชพเชฎ: 67108860 เช…เชตเชงเชฟ 112.0064ms
maxEvenDiving2 เชชเชฐเชฟเชฃเชพเชฎ: 67108860 เช…เชตเชงเชฟ 77.0044ms
maxEvenConjunction เชชเชฐเชฟเชฃเชพเชฎ: 67108860 เช…เชตเชงเชฟ 112.0064ms
maxEvenConjunction2 เชชเชฐเชฟเชฃเชพเชฎ: 67108860 เช…เชตเชงเชฟ 80.0046ms

เชฎเชนเชคเซเชคเชฎ เชฅเซเชฐเซ‡เชถเซ‹เชฒเซเชก: 134217728
maxEvenDividing เชชเชฐเชฟเชฃเชพเชฎ: 134217726 เช…เชตเชงเชฟ 109.0063ms
maxEvenDiving2 เชชเชฐเชฟเชฃเชพเชฎ: 134217726 เช…เชตเชงเชฟ 78.0044ms
maxEvenConjunction เชชเชฐเชฟเชฃเชพเชฎ: 134217726 เช…เชตเชงเชฟ 114.0065ms
maxEvenConjunction2 เชชเชฐเชฟเชฃเชพเชฎ: 134217726 เช…เชตเชงเชฟ 81.0047ms

เชฎเชนเชคเซเชคเชฎ เชฅเซเชฐเซ‡เชถเซ‹เชฒเซเชก: 268435456
maxEvenDividing เชชเชฐเชฟเชฃเชพเชฎ: 268435446 เช…เชตเชงเชฟ 111.0064ms
maxEvenDiving2 เชชเชฐเชฟเชฃเชพเชฎ: 268435446 เช…เชตเชงเชฟ 79.0045ms
maxEvenConjunction เชชเชฐเชฟเชฃเชพเชฎ: 268435446 เช…เชตเชงเชฟ 114.0065ms
maxEvenConjunction2 เชชเชฐเชฟเชฃเชพเชฎ: 268435446 เช…เชตเชงเชฟ 79.0045ms

เชฎเชนเชคเซเชคเชฎ เชฅเซเชฐเซ‡เชถเซ‹เชฒเซเชก: 536870912
maxEvenDividing เชชเชฐเชฟเชฃเชพเชฎ: 536870910 เช…เชตเชงเชฟ 107.0062ms
maxEvenDiving2 เชชเชฐเชฟเชฃเชพเชฎ: 536870910 เช…เชตเชงเชฟ 76.0043ms
maxEvenConjunction เชชเชฐเชฟเชฃเชพเชฎ: 536870910 เช…เชตเชงเชฟ 109.0062ms
maxEvenConjunction2 เชชเชฐเชฟเชฃเชพเชฎ: 536870910 เช…เชตเชงเชฟ 80.0046ms

เชฎเชจเซ‡ เชธเซเชชเชทเซเชŸ เชธเชฎเชœเซ‚เชคเซ€ เชฎเชณเซ€ เชจเชฅเซ€ เช•เซ‡ เชถเชพ เชฎเชพเชŸเซ‡ เช—เซ‹ เช•เชฎเซเชชเชพเช‡เชฒเชฐ เช•เซ‹เชกเชจเซ‡ เช‘เชชเซเชŸเชฟเชฎเชพเช‡เช เช•เชฐเชคเซเช‚ เชจเชฅเซ€ เช…เชจเซ‡ เชนเช‚เชฎเซ‡เชถเชพ เชฌเซ€เชœเซ€ เชถเชฐเชค เชคเชชเชพเชธเซ‡ เช›เซ‡, เชชเช›เซ€ เชญเชฒเซ‡ เชชเชนเซ‡เชฒเซ€ เช–เซ‹เชŸเซ€ เชนเซ‹เชฏ. เช…เชฅเชตเชพ เช•เชฆเชพเชš เชฎเชพเชฐเซ€ เช†เช‚เช–เซ‹ เชฎเชพเชคเซเชฐ เชเชพเช‚เช–เซ€ เช›เซ‡ เช…เชจเซ‡ เชฎเชจเซ‡ เช•เซ‹เชˆ เชธเซเชชเชทเซเชŸ เชญเซ‚เชฒ เชฆเซ‡เช–เชพเชคเซ€ เชจเชฅเซ€? เช…เชฅเชตเชพ เชคเชฎเชพเชฐเซ‡ เช•เชฎเซเชชเชพเชˆเชฒเชฐเชจเซ‡ เช•เซ‡เชŸเชฒเซ€เช• เชตเชฟเชถเซ‡เชท เชธเซ‚เชšเชจเชพเช“ เช†เชชเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡? เชธเชฎเชœเชฆเชพเชฐ เชŸเชฟเชชเซเชชเชฃเซ€เช“ เชฎเชพเชŸเซ‡ เชฎเชจเซ‡ เช†เชจเช‚เชฆ เชฅเชถเซ‡.

PS: เชนเชพ, เชฎเชพเชคเซเชฐ เช†เชจเช‚เชฆ เชฎเชพเชŸเซ‡, เชฎเซ‡เช‚ Java 5 เช…เชจเซ‡ Java 7/8 เชชเชฐ เชธเชฎเชพเชจ เชชเชฐเซ€เช•เซเชทเชฃเซ‹ เชšเชฒเชพเชตเซเชฏเชพ - เชฌเชงเซเช‚ เชธเซเชชเชทเซเชŸ เช›เซ‡, เช…เชฎเชฒเชจเซ‹ เชธเชฎเชฏ เชธเชฎเชพเชจ เช›เซ‡.

เชธเซ‹เชฐเซเชธ: www.habr.com

เชเช• เชŸเชฟเชชเซเชชเชฃเซ€ เช‰เชฎเซ‡เชฐเซ‹