Siebel Performance for Script <1>

1.Code in PreGetFieldValue, PreSetFieldValue, SetFieldValue, PreCanInvokeMethod, PreInvokeMethod and InvokeMethod event handlers has been placed outside the switch on FieldName/MethodName.

Wrong Example:By DW

function BusComp_SetFieldValue (FieldName)
{. . . . .
var boQuote = TheApplication().ActiveBusObject();
var bcQuote = boQuote.GetBusComp("Quote");
var nExchangeRate = bcQuote.GetFieldValue("Display Exchange Rate");
var sCRMCurrencyCode = bcQuote.GetFieldValue("Currency Code");
var nCommission = 0,nCRMCommission = 0,nCommmissionRate = 0;
var nBudgetConRate =this.GetFieldValue("Conversion Rate");
var nQuoteTotal = this.GetFieldValue("Quote Total");
var sCurrencyCode = this.GetFieldValue("Currency Code");
if(FieldName == "Commission"){
. . . . . .    }

Consequence

These event handlers have meaning if related to a particular FieldName or MethodName passed as input by the infrastructure.

Code places outside the switches on such variables will be executed for every field or method. This means that it will be unnecessarily executed a lot of times

For example this is the list of methods invoked to display the Contact List Applet:

PreCanInvokeMethod invoked DeleteRecord
PreCanInvokeMethod invoked ShowQueryAssistant
PreCanInvokeMethod invoked ToggleListRowCount
PreCanInvokeMethod invoked UndoQuery
PreCanInvokeMethod invoked ExecuteQuery
PreCanInvokeMethod invoked GotoNextSet
PreCanInvokeMethod invoked GotoPreviousSet
PreCanInvokeMethod invoked NewQuery
PreCanInvokeMethod invoked NewRecord
PreCanInvokeMethod invoked PositionOnRow
PreCanInvokeMethod invoked UndoQuery
PreCanInvokeMethod invoked UndoRecord
PreCanInvokeMethod invoked WriteRecord
PreCanInvokeMethod invoked ShowPopup
PreCanInvokeMethod invoked ToggleLayout
PreCanInvokeMethod invoked GetBookmarkURL
PreCanInvokeMethod invoked FileSendMail
PreCanInvokeMethod invoked FileSendFax
PreCanInvokeMethod invoked FileSendPage
PreCanInvokeMethod invoked FileSendWireless
PreCanInvokeMethod invoked Import
PreCanInvokeMethod invoked ExportQuery
PreCanInvokeMethod invoked CopyRecord
PreCanInvokeMethod invoked ChangeRecords
PreCanInvokeMethod invoked MergeRecords
PreCanInvokeMethod invoked SelectAll
PreCanInvokeMethod invoked InvertSelection
PreCanInvokeMethod invoked ColumnsDisplayed
PreCanInvokeMethod invoked GotoPrevious
PreCanInvokeMethod invoked GotoNext
PreCanInvokeMethod invoked GotoFirstSet
PreCanInvokeMethod invoked GotoLastSet
PreCanInvokeMethod invoked RefineQuery
PreCanInvokeMethod invoked AboutRecord
PreCanInvokeMethod invoked EditPopup
PreCanInvokeMethod invoked ExecuteReply
PreCanInvokeMethod invoked ExecuteReplyAll
PreCanInvokeMethod invoked ExecuteForward
PreCanInvokeMethod invoked EmailSend
PreCanInvokeMethod invoked EmailCancel
PreCanInvokeMethod invoked RecordCount
PreCanInvokeMethod invoked AddToSyncList
PreCanInvokeMethod invoked RemoveFromSyncList
PreCanInvokeMethod invoked SynchContact
PreCanInvokeMethod invoked NewOrder
PreCanInvokeMethod invoked NewQuote
PreCanInvokeMethod invoked SortOrder
PreCanInvokeMethod invoked GotoApplet

If an object allocation, a BC query, a call to CountRecords is placed outside the switch, it will be executed unnecessarily more than 40 times only at applet load. This may result in a sub-optimal performance.

Solution

Place all the code in these event handlers inside the switch on method or field name.

Only variable declaration (not allocation) should be places outside.

function BusComp_SetFieldValue (FieldName)
{. . . . .
if(FieldName == "Commission"){
var boQuote = TheApplication().ActiveBusObject();
var bcQuote = boQuote.GetBusComp("Quote");
var nExchangeRate = bcQuote.GetFieldValue("Display Exchange Rate");
var sCRMCurrencyCode = bcQuote.GetFieldValue("Currency Code");
var nCommission = 0,nCRMCommission = 0,nCommmissionRate = 0;
var nBudgetConRate =this.GetFieldValue("Conversion Rate");
var nQuoteTotal = this.GetFieldValue("Quote Total");
var sCurrencyCode = this.GetFieldValue("Currency Code");
. . . . . .    }

 

转载于:https://www.cnblogs.com/Flamo/p/3977666.html

在机器人操作系统(ROS)中,机器视觉是机器人感知和理解周围环境的关键技术。robot_vision功能包专注于这一领域,集成了多种视觉处理技术,包括摄像头标定、OpenCV库应用、人脸识别、物体跟踪、二维码识别和物体识别,极大地拓展了ROS在视觉应用方面的能力。 摄像头标定:作为机器视觉的基础,摄像头标定用于消除镜头畸变并获取相机的内参和外参。在ROS中,camera_calibration包提供了友好的用户界面和算法,帮助计算相机参数矩阵,为后续的图像校正和三维重建提供支持。 OpenCV:OpenCV是一个广泛使用的开源计算机视觉库,在ROS中扮演着重要角色。robot_vision功能包可能包含OpenCV的示例代码和节点,涵盖图像处理、特征检测、模板匹配和图像分割等功能,这些功能对机器人视觉系统至关重要。 人脸识别:ROS中的人脸识别结合了图像处理和机器学习技术。robot_vision可能集成了基于OpenCV的人脸检测算法,如Haar级联分类器或Adaboost方法,甚至可能包含深度学习模型(如FaceNet或SSD),帮助机器人实现人脸的识别和跟踪,提升人机交互能力。 物体跟踪:物体跟踪使机器人能够持续关注并追踪特定目标。在ROS中,通常通过卡尔曼滤波器、粒子滤波器或光流法实现。robot_vision功能包可能包含这些算法的实现,助力机器人完成动态目标跟踪任务。 二维码识别:二维码是一种高效的信息编码方式,常用于机器人定位和导航。ROS中的二维码包可用于读取和解析二维码,而robot_vision可能进一步封装了这一功能,使其更易于集成到机器人系统中。 物体识别:作为机器视觉的高级应用,物体识别通常涉及深度学习模型,如YOLO、SSD或Faster R-CNN。robot_vision功能包可能包含预训练的模型和对应的ROS节点,使机器人能够识别环境中的特
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值