Files
resourcespace/tests/performance_tests/000400_simple_searches.php
2025-07-18 16:20:14 +07:00

92 lines
2.4 KiB
PHP

<?php
command_line_only();
// Create arrays of fake words
$password_min_length = 8;
$password_min_alpha = 8;
$password_min_numeric = 0;
$password_min_special = 0;
$shortnodewords = [];
for ($n = 0; $n < 1000; $n++) {
$shortnodewords[$n] = make_password();
}
$longnodewords = [];
for ($n = 0; $n < 1000; $n++) {
$longnodewords[$n] = make_password();
}
// Create short nodes
$nodecount = 1000;
$shortnodeids = [];
for ($n = 0; $n < $nodecount; $n++) {
shuffle($shortnodewords);
$nodelength = mt_rand(1, 5);
$nodename = implode(" ", array_slice($shortnodewords, 0, $nodelength));
$shortnodeids[] = set_node(null, 8, $nodename, null, 0);
}
// Create long nodes
$nodecount = 500;
$longnodeids = [];
for ($n = 0; $n < $nodecount; $n++) {
shuffle($longnodewords);
$nodelength = mt_rand(100, 250);
$nodename = implode(" ", array_slice($longnodewords, 0, $nodelength));
$longnodeids[] = set_node(null, 8, $nodename, null, 0);
}
// Create resources
$rescount = 1000;
$resources = [];
for ($n = 0; $n < $rescount; $n++) {
$resources[] = create_resource(1, 0, -1);
}
// Add short nodes
foreach ($resources as $resource) {
shuffle($shortnodeids);
// Add 5 short nodes to each resource
add_resource_nodes($resource, array_slice($shortnodeids, 5));
}
// Add long nodes
foreach ($resources as $resource) {
$randnode = array_rand($longnodeids);
// Add 1 long node to each resource
add_resource_nodes($resource, [$longnodeids[$randnode]]);
}
$start_time = microtime(true);
$searches = [];
$search_repeat = 50;
for ($n = 0; $n < $search_repeat; $n++) {
clear_query_cache("schema");
shuffle($longnodeids);
shuffle($shortnodewords);
shuffle($longnodewords);
// Add search for node id
$searches[] = NODE_TOKEN_PREFIX . $longnodeids[0];
// Add search for multiple node ids
$searches[] = NODE_TOKEN_PREFIX . $longnodeids[1] . " " . NODE_TOKEN_PREFIX . $longnodeids[2];
// Add search for short node names
$searches[] = implode(" ", array_slice($shortnodewords, 0, 2));
// Add search for long node names
$searches[] = implode(" ", array_slice($longnodewords, 0, 2));
// Add search for quoted node names
$searches[] = "\"" . implode(" ", array_slice($shortnodewords, 2, 2)) . "\"";
}
foreach ($searches as $search) {
$results = do_search($search);
}
echo str_pad("Time to perform multiple simple searches (seconds):", 60) . round(microtime(true) - $start_time, 2) . " - ";