Hi all, I wrote a function to get the selected layers. I want to log the time duration of the execution of this function. So I write as follows,
function getSelectedLayers()
{
var selectedLayers;
try
{
var doc = app.activeDocument;
selectedLayers = new Array();
var isBackGroundPresent;
try
{
isBackGroundPresent = doc.backgroundLayer;
}
catch(e)
{
isBackGroundPresent = false;
}
var layerRef = new ActionReference();
layerRef.putEnumerated(app.charIDToTypeID("Dcmn"), app.charIDToTypeID("Ordn"), app.charIDToTypeID("Trgt"));
var layerDesc = app.executeActionGet(layerRef);
var listOfSlctedLyr;
if(layerDesc.hasKey(app.stringIDToTypeID('targetLayers')))
{
listOfSlctedLyr = layerDesc.getList(app.stringIDToTypeID('targetLayers'));
var noOfSlctedLayer = listOfSlctedLyr.count;
for(var i=0; i < noOfSlctedLayer; i++)
{
if(isBackGroundPresent)
selectedLayers.push(listOfSlctedLyr.getReference(i).getIndex());
else
selectedLayers.push(listOfSlctedLyr.getReference(i).getIndex()+1);
}
}
else
{
layerRef = new ActionReference();
layerRef.putProperty(app.charIDToTypeID("Prpr"), app.charIDToTypeID("ItmI"));
layerRef.putEnumerated(app.charIDToTypeID("Lyr "), app.charIDToTypeID("Ordn"), app.charIDToTypeID("Trgt"));
if(isBackGroundPresent)
selectedLayers.push(app.executeActionGet(layerRef).getInteger(app.charIDToTypeID("ItmI"))-1);
else
selectedLayers.push(app.executeActionGet(layerRef).getInteger(app.charIDToTypeID("ItmI")));
var layerVisibility = doc.activeLayer.visible;
if(layerVisibility == true)
doc.activeLayer.visible = false;
layerDesc = new ActionDescriptor();
listOfSlctedLyr = new ActionList();
layerRef = new ActionReference();
layerRef.putEnumerated(app.charIDToTypeID('Lyr '), app.charIDToTypeID('Ordn'), app.charIDToTypeID('Trgt'));
listOfSlctedLyr.putReference(layerRef);
layerDesc.putList(app.charIDToTypeID('null'), listOfSlctedLyr);
app.executeAction(app.charIDToTypeID('Shw '), layerDesc, DialogModes.NO);
if(doc.activeLayer.visible == false)
selectedLayers.shift();
doc.activeLayer.visible = layerVisibility;
}
}
catch(e)
{
selectedLayers = null;
}
return selectedLayers;
}
var sTime = new Date().getTime();
var sourceItem = getSelectedLayers();
var eTime = new Date().getTime();
$.writeln (((eTime - sTime)/1000) + " sec");
Every time, I see different time duration ranging from 0.177 sec to 0.450. I don't understand why it behaves like this? Shouldn't the value be same every time or approximate? What could be the reason of such difference? Thanks
... View more