Add test scenario for Random() performance

liquid_container
Lukas Werling 2016-04-20 20:57:04 +02:00
parent 1f9c15e388
commit 1f5dc0aec6
2 changed files with 45 additions and 0 deletions

View File

@ -0,0 +1,43 @@
/* A map for testing the Random() number generator. */
#include Library_Map
// Overload Random to make it show up in the script profiler.
func Random()
{
return inherited(...);
}
func InitializeMap(proplist map)
{
Resize(800, 800);
var layer1 = CreateLayer(nil, map.Wdt, map.Hgt / 2);
var layer2 = CreateLayer(nil, map.Wdt, map.Hgt / 2);
StartScriptProfiler();
DrawRandomPattern(layer1, "Water");
DrawRandomPattern2(layer2);
StopScriptProfiler();
Blit(layer1, [0, 0, layer1.Wdt, layer1.Hgt]);
Blit({Algo=MAPALGO_Offset, OffY=map.Hgt / 2, Op=layer2});
return true;
}
// For each pixel: either fill or don't fill.
func DrawRandomPattern(proplist layer, string mat)
{
for (var y = 0; y < layer.Hgt; y++)
for (var x = 0; x < layer.Wdt; x++)
if (!Random(2))
layer->SetPixel(x, y, mat);
}
// Fill each pixel with a random material.
func DrawRandomPattern2(proplist layer)
{
var mats = [ "Acid", "Amethyst", "Ashes", "Brick", "BrickSoft", "Coal", "DuroLava", "Earth", "Everrock", "Firestone", "Gold", "Granite", "HalfVehicle", "Ice", "Lava", "ORE", "Rock", "Ruby", "SandDry", "Sand", "Snow", "Tunnel", "Vehicle", "Water" ];
var n = GetLength(mats);
for (var y = 0; y < layer.Hgt; y++)
for (var x = 0; x < layer.Wdt; x++)
layer->SetPixel(x, y, mats[Random(n)]);
}

View File

@ -0,0 +1,2 @@
[Landscape]
MapZoom=2