I've run the following PHP function on two different machines and consistently seen little difference in runtime - Ex. 40 sec vs 40.5 sec. Why is this?
The Two Different Builds:
- 2.3Ghz 8-Core Intel Core I9, 16GB RAM
- 3.8Ghz 12-Core Ryzen 9 3900x, 32GB RAM
I know that PHP runs scripts on a single core, but I'm unsure as to why the difference in clock speeds between the two processors accounted for no difference in runtime.
The Function:
This function takes a parent product, looks through its components for either a part or assembly - if a part - recursion, if not add to global variable. I know it's bad practice to use global variables, but in my application this makes sense for me.
<?php
$masterPickList = [];
function listBuilder($itemNo, $multiplier){
global $masterPickList;
include "bin/inventoryConn.php";
$assemblies = [];
$AssemblySelect = "SELECT products.PRD_COMP_ITEM_NO,products.PRD_STR_QTY_PER_PAR, itemInfo.ITEM_DESC1,itemInfo.ITEM_DESC2,itemInfo.ITEM_P_AND_IC_CD,itemInfo.ITEM_USER_DEF_CD,itemInfo.ITEM_NO,itemInfo.ITEM_PUR_UOM
FROM products INNER JOIN itemInfo ON products.PRD_COMP_ITEM_NO = itemInfo.ITEM_NO WHERE products.PRD_STR_PAR_ITEM_NO = '{$itemNo}' ORDER BY PRD_COMP_ITEM_NO ASC;";
$AssemblyResult = mysqli_query($conn, $AssemblySelect) or die("Bad Query: $AssemblySelect");
while($row = mysqli_fetch_assoc($AssemblyResult))
{
if ($row['ITEM_P_AND_IC_CD'] !== '11' && $row['ITEM_P_AND_IC_CD'] !== '11A' && $row['ITEM_P_AND_IC_CD'] !== '90')
{
if (strpos($row['ITEM_NO'],'50-') !== false)
{
$masterPickList[$itemNo]['SCD'][$row['ITEM_NO']]['ITEM_NO'] = $row['ITEM_NO'];
$masterPickList[$itemNo]['SCD'][$row['ITEM_NO']]['ITEM_DESC1'] = $row['ITEM_DESC1'];
$masterPickList[$itemNo]['SCD'][$row['ITEM_NO']]['ITEM_DESC2'] = $row['ITEM_DESC2'];
$masterPickList[$itemNo]['SCD'][$row['ITEM_NO']]['QTY'] = intval($multiplier) * intval($row['PRD_STR_QTY_PER_PAR']);
if ($row['ITEM_USER_DEF_CD'] !== 'P')
{
$masterPickList[$itemNo]['SCD'][$row['ITEM_NO']]['PICK'] = '*Do Not Pick*';
} elseif ($row['ITEM_USER_DEF_CD'] == 'P')
{
$masterPickList[$itemNo]['SCD'][$row['ITEM_NO']]['PICK'] = '';
}
$masterPickList[$itemNo]['SCD'][$row['ITEM_NO']]['UM'] = $row['ITEM_PUR_UOM'];
}
else
{
$masterPickList[$itemNo]['COMP'][$row['ITEM_NO']]['ITEM_NO'] = $row['ITEM_NO'];
$masterPickList[$itemNo]['COMP'][$row['ITEM_NO']]['ITEM_DESC1'] = $row['ITEM_DESC1'];
$masterPickList[$itemNo]['COMP'][$row['ITEM_NO']]['ITEM_DESC2'] = $row['ITEM_DESC2'];
$masterPickList[$itemNo]['COMP'][$row['ITEM_NO']]['QTY'] = intval($multiplier) * intval($row['PRD_STR_QTY_PER_PAR']);
if ($row['ITEM_USER_DEF_CD'] !== 'P')
{
$masterPickList[$itemNo]['COMP'][$row['ITEM_NO']]['PICK'] = '*Do Not Pick*';
} elseif ($row['ITEM_USER_DEF_CD'] == 'P')
{
$masterPickList[$itemNo]['COMP'][$row['ITEM_NO']]['PICK'] = '';
}
$masterPickList[$itemNo]['COMP'][$row['ITEM_NO']]['UM'] = $row['ITEM_PUR_UOM'];
}
}
else if ($row['ITEM_P_AND_IC_CD'] == '11' || $row['ITEM_P_AND_IC_CD'] == '11A' || $row['ITEM_P_AND_IC_CD'] == '90')
{
$masterPickList[$itemNo]['COMP'][$row['ITEM_NO']]['ITEM_NO'] = $row['ITEM_NO'];
$masterPickList[$itemNo]['COMP'][$row['ITEM_NO']]['ITEM_DESC1'] = $row['ITEM_DESC1'];
$masterPickList[$itemNo]['COMP'][$row['ITEM_NO']]['ITEM_DESC2'] = $row['ITEM_DESC2'];
$masterPickList[$itemNo]['COMP'][$row['ITEM_NO']]['QTY'] = intval($multiplier) * intval($row['PRD_STR_QTY_PER_PAR']);
if ($row['ITEM_USER_DEF_CD'] !== 'P')
{
$masterPickList[$itemNo]['COMP'][$row['ITEM_NO']]['PICK'] = '*Do Not Pick*';
} elseif ($row['ITEM_USER_DEF_CD'] == 'P')
{
$masterPickList[$itemNo]['COMP'][$row['ITEM_NO']]['PICK'] = '';
}
$masterPickList[$itemNo]['COMP'][$row['ITEM_NO']]['UM'] = $row['ITEM_PUR_UOM'];
$assemblies[] = $row['ITEM_NO'];
}
}
foreach($assemblies as $item) {
listBuilder($item, $multiplier);
}
}