assertCount(3, $ps); $sip = XdbSearcher::ip2long($ps[0]); $eip = XdbSearcher::ip2long($ps[1]); $this->assertNotNull($sip); $this->assertNotNull($eip); $this->assertGreaterThanOrEqual($sip, $eip); $mip = ($sip + $eip) >> 1; foreach ([$sip, ($sip + $mip) >> 1, $mip, ($mip + $eip) >> 1, $eip] as $ip) { try { $cTime = XdbSearcher::now(); $region = $searcher->search($ip); $costs += XdbSearcher::now() - $cTime; } catch (\Exception $e) { printf("failed to search ip `%s`\n", long2ip($ip)); return; } $this->assertNotNull($region, sprintf("failed to search ip `%s`", long2ip($ip))); // check the region info $this->assertEquals( $ps[2], $region, sprintf("failed search(%s) with (%s != %s)\n", long2ip($ip), $region, $ps[2]) ); $count++; } } fclose($handle); $searcher->close(); printf( "Bench finished, {cachePolicy: %s, total: %d, took: %ds, cost: %.3f ms/op}\n", $cachePolicy, $count, (XdbSearcher::now() - $ts) / 1000, $count == 0 ? 0 : $costs / $count ); } }