Performance Example
Last week, there was a question posted to the forum asking about how to retrieve multiple records from an internal table without using a loop
endloop construct. I posted an answer showing how it could be done using a binary search followed by indexed reads on the table. I wrote a small program which illustrates this point. Ive posted the code below, but in a nutshell, what it does is select a number of FI document headers and line items from BKPF and BSEG. The select statement from BSEG is very inefficient. I did it that way for a reason, so please dont give me any grief over it. It then reads all records from both tables using a nested loop. Finally it reads all records from both tables using the method I proposed. It keeps track of the number of records and time taken for each operation.
I ran the program twice in our QA environment once selecting a small amount of data and again selecting a moderate amount. The outputs are:
First run -
Time for unindexed select: 00:08:31
Number of BKPF entries: 1,892
Number of BSEG entries: 5,777
Time for nested loop: 00:00:05
Number of BKPF reads: 1,892
Number of BSEG reads: 5,777
Time for indexed loop: 00:00:00
Number of BKPF reads: 1,892
Number of BSEG reads: 5,777
Second run
Time for unindexed select: 00:17:31
Number of BKPF entries: 24,148
Number of BSEG entries: 84,358
Time for nested loop: 00:23:44
Number of BKPF reads: 24,148
Number of BSEG reads: 84,358
Time for indexed loop: 00:00:00
Number of BKPF reads: 24,148
Number of BSEG reads: 84,358
So what can we conclude? In the first case, a gain in time of five seconds is not much, but in a dialogue program, it might be worthwhile. But in the second case the other method gains over twenty minutes. This would allow a program that has to run in the background to run in the foreground. The most striking thing to me though, is the fact that the nested loop takes substantially longer than an extremely inefficient select statement.
The select screen for the program is quite standard. The amount of data returned is determined by whatever the user enters and the programmer really has no control over it. So Im suggesting that if you cant guarantee that the amount of data is small, then you really ought to use the indexed read method.
Also note that the first select statement returns 5,777 rows from BSEG and takes 08:31 to run and the second one returns 84,358 rows and takes 17:31. The second one retrieves almost 15 times as much data but takes only about twice as long to execute. The two runs of the program were on separate evenings when there shouldnt be any load, so buffering and workload shouldnt be issues.
So, my final conclusion is: when tuning a program that you know will return a small amount of data, tune the select statement and dont worry too much about loops; however, if the program may return a large amount of data, avoid nested loops.
Code follows:
REPORT ztest.
TABLES: bkpf, bseg.
SELECT-OPTIONS: s_bukrs FOR bseg-bukrs MEMORY ID buk OBLIGATORY,
s_gjahr FOR bseg-gjahr MEMORY ID gjr OBLIGATORY,
s_lifnr FOR bseg-lifnr MEMORY ID lif OBLIGATORY.
DATA: BEGIN OF bkpf_int OCCURS 0.
INCLUDE STRUCTURE bkpf.
DATA: END OF bkpf_int.
DATA: BEGIN OF bseg_int OCCURS 0.
INCLUDE STRUCTURE bseg.
DATA: END OF bseg_int.
DATA: start_time LIKE sy-uzeit,
end_time LIKE sy-uzeit,
difference LIKE sy-uzeit,
bkpf_entries LIKE sy-tabix,
bseg_entries LIKE sy-tabix,
bkpf_reads LIKE sy-tabix,
bseg_reads LIKE sy-tabix.
START-OF-SELECTION.
PERFORM unindexed_select.
PERFORM nested_loop.
PERFORM indexed_loop.
*& Form unindexed_select
FORM unindexed_select.
GET TIME FIELD start_time.
SELECT * FROM bseg INTO TABLE bseg_int
WHERE bukrs IN s_bukrs
AND gjahr IN s_gjahr
AND lifnr IN s_lifnr.
SELECT * FROM bkpf INTO TABLE bkpf_int
FOR ALL ENTRIES IN bseg_int
WHERE bukrs = bseg_int-bukrs
AND belnr = bseg_int-belnr
AND gjahr = bseg_int-gjahr
AND bstat = space.
CLEAR bseg_int.
REFRESH bseg_int.
SELECT * FROM bseg INTO TABLE bseg_int
FOR ALL ENTRIES IN bkpf_int
WHERE bukrs = bkpf_int-bukrs
AND belnr = bkpf_int-belnr
AND gjahr = bkpf_int-gjahr.
GET TIME FIELD end_time.
difference = end_time - start_time.
DESCRIBE TABLE bkpf_int LINES bkpf_entries.
DESCRIBE TABLE bseg_int LINES bseg_entries.
WRITE: /001 'Time for unindexed select:', difference,
/005 'Number of BKPF entries:', bkpf_entries,
/005 'Number of BSEG entries:', bseg_entries.
ENDFORM. " unindexed_select
*& Form nested_loop
FORM nested_loop.
GET TIME FIELD start_time.
LOOP AT bkpf_int.
bkpf_reads = bkpf_reads + 1.
LOOP AT bseg_int WHERE
bukrs = bkpf_int-bukrs AND
belnr = bkpf_int-belnr AND
gjahr = bkpf_int-gjahr.
bseg_reads = bseg_reads + 1.
ENDLOOP.
ENDLOOP.
GET TIME FIELD end_time.
difference = end_time - start_time.
WRITE: /001 'Time for nested loop:', difference,
/005 'Number of BKPF reads:', bkpf_reads,
/005 'Number of BSEG reads:', bseg_reads.
ENDFORM. " nested_loop
*& Form indexed_loop
* text
FORM indexed_loop.
DATA: bkpf_index LIKE sy-tabix,
bseg_index LIKE sy-tabix.
CLEAR: bkpf_reads,
bseg_reads.
GET TIME FIELD start_time.
SORT: bkpf_int BY bukrs belnr gjahr,
bseg_int BY bukrs belnr gjahr.
LOOP AT bkpf_int.
READ TABLE bseg_int WITH KEY
bukrs = bkpf_int-bukrs
belnr = bkpf_int-belnr
gjahr = bkpf_int-gjahr
BINARY SEARCH.
bkpf_reads = bkpf_reads + 1.
bseg_index = sy-tabix.
WHILE sy-subrc = 0.
bseg_index = bseg_index + 1.
bseg_reads = bseg_reads + 1.
READ TABLE bseg_int INDEX bseg_index.
IF bseg_int-bukrs <> bkpf_int-bukrs OR
bseg_int-belnr <> bkpf_int-belnr OR
bseg_int-gjahr <> bkpf_int-gjahr.
sy-subrc = 99.
ELSE.
ENDIF.
ENDWHILE.
ENDLOOP.
GET TIME FIELD end_time.
difference = end_time - start_time.
WRITE: /001 'Time for indexed loop:', difference,
/005 'Number of BKPF reads:', bkpf_reads,
/005 'Number of BSEG reads:', bseg_reads.
ENDFORM. " indexed_loop
Hi, something in additional.
Can anyone explain why the two ways has a so definitely difference in performance, in the ABAP runtime analyze view.
In my opinion, maybe binary read is a short quick action in the memory. On the opposite side, when do nested loop, the runtime will need many swap memory action as it need to keep the status info of external loop, that will cost a lost in performance.
That's the supposition of mine. Really hope anyone can explain the reason under the phenomena.
thanks
Similar Messages
-
Calling ABAP Subroutines: PERFORM example
hi friends,
Can any one give me an example on Calling ABAP Subroutines: PERFORM or provide any links for that example already posted in sdn ...
points will be awarded
regards and thanks
Vijayahi
With the PERFORM statement, you can call subroutines which are coded in the same ABAP program (internal calls), or subroutines which are coded in other ABAP programs (external calls).
You can also specify the name of the subroutine dynamically at runtime, and call subroutines from a list.
Internal Subroutine Calls
To call a subroutine defined in the same program, you need only specify its name in the PERFORM statement:
PERFORM <subr> http://USING ... <pi>...
http://CHANGING... <pi>... .
The internal subroutine can access all of the global data of the calling program.
http://help.sap.com/saphelp_nw04/helpdata/en/9f/db978335c111d1829f0000e829fbfe/content.htm
reward point if helpful.
thanks -
Perform check after release step of purchasing requisition
Hi,
does anybody have a suggestion where to place best some logic which needs to be performed after a release step is performed successfully.
background: we use different types of Purchase requisitions, while each one is assigned to a static release strategy. I like to change it in more dynamic way by adding certain logic after a release step is performed.
example: if preceeding release step was 10 and purchase requisition is of type x then check purchase value and account assignment in order to process the current stepo automatically.
Currently the logic runs during a nightly job, but I would like to add it immediately after a release has been performed. I would imagin something like user exit, BusinessAddIn, or an event which I can use assign the job.
Can anybody suggest something?
Thanks in advance
Best regards
Torsten
Edited by: Torsten Hübsch on Apr 29, 2011 10:36 PMHi,
Enhancement M06B0005 is relevant for PR in case of overall release
Check on trx SMOD :
Enhancement M06B0005
Short text Changes to comm. structure for overall release of requisistion
--> Function module Short Text
EXIT_SAPLEBND_004 Changes to Communication Structure for Over.
Enhancement M06B0002 is for item-release
Short text Changes to comm. structure for purchase requisition release
-->
Function module
EXIT_SAPLEBND_001
BR
Nadia Orlandi -
Hi Experts,
i want to join my layout & standard prog and my sub-routine pool program. how to do it.
correct answers will be appericiated.
regards,
Sunita.hi sunita,
you can do the same by making a program in se38 which is basically the subroutine program i.e for all forms and se71 script editors just call it by perform.
example :-
Hi Sunita,
In SE38 you can write your perform as
*& Form GET_DETAILS
-->IN_TAB text
-->OUT_TAB text
FORM get_details TABLES in_tab STRUCTURE itcsy
out_tab STRUCTURE itcsy.
Workareas and Variables Declaration
DATA : wa_namp1 LIKE t001s,
wa_telf1 LIKE fsabe,
l_bukrs LIKE mhnk-bukrs,
l_kunnr LIKE mhnk-kunnr,
l_busab LIKE knb1-busab.
Reading Data From Sapscript
READ TABLE in_tab WITH KEY name = 'MHNK-BUKRS'.
IF sy-subrc = 0 .
MOVE in_tab-value TO l_bukrs.
ENDIF.
READ TABLE in_tab WITH KEY name = 'MHNK-KUNNR'.
IF sy-subrc = 0 .
MOVE in_tab-value TO l_kunnr.
ENDIF.
FM to Convert Data From Sapscript
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = l_kunnr
IMPORTING
output = l_kunnr.
Fetching the Clerk Number
SELECT busab
FROM knb1 UP TO 1 ROWS
INTO l_busab
WHERE kunnr = l_kunnr AND bukrs = l_bukrs.
ENDSELECT.
FM for getting Credit Analyst Name,phone and email.
CALL FUNCTION 'CORRESPONDENCE_DATA_BUSAB'
EXPORTING
i_bukrs = l_bukrs
i_busab = l_busab
IMPORTING
e_t001s = wa_namp1
e_fsabe = wa_telf1.
Read subroutine parameters and store in variables.
READ TABLE out_tab WITH KEY name = 'L_SNAME'.
IF sy-subrc = 0 .
MOVE wa_namp1-sname TO out_tab-value.
MODIFY out_tab INDEX sy-tabix.
ENDIF.
READ TABLE out_tab WITH KEY name = 'L_TELF1'.
IF sy-subrc = 0 .
MOVE wa_telf1-telf1 TO out_tab-value.
MODIFY out_tab INDEX sy-tabix.
ENDIF.
ENDFORM. "get_details
whereas in SAP script SE71 you can write
/:perform get_details in program "Program name in SE38"
/: Using &MHNK-BUKRS&
/: Using &MHNK-KUNNR&
/: Changing &L_SNAME&
/: Changing &L_TELF1&
/:endform.
if you still have doubt please feel free to contact me.
Thanks
Ankur -
Hi friends.
Instead of SQL Trace/SE30/Extended Program check,Is there any SAP Standard or ABAP Program available in SAP R/3 to <b><u>audit</u></b>(To test the efficiency of Source code) the <u><b>Z-Programs</b></u> ?
Please if any share with me!
Thanks.
Surendher Reddy.BHi,
Get ride of any nested selects. try to select all your data upfront into internal tables and process them instead of loads of selects nested as this increases the number of hits between the application server (front-end) and the database server (back-end).
Also, use FOR ALL ENTRIES syntax to improve efficiently.
In SE38 run the menu Environment -> Examples -> Performance examples. This will highlight any areas you may be able to make big savings.
You can also use the runtime analysis to see where your bottlenecks are.
If you provide me an e-mail, I will send you some source code you can manipulate for QA checking. However, it is a little hard to understand but you are welcome to view it.
Cheers
Colin. -
How to reduse ABAP and Database Execution Time in Runtime Analysis to increae Performance Issue
Hi,
you can calculate runtime like this:
TABLES: MARA.
Messungs von Laufzeiten zwischen Anweisungen.
DATA: UZEIT LIKE SY-UZEIT.
DATA: DATUM LIKE SY-DATUM.
DATA: MMSEC TYPE I.
DATA: LF_TIMESTAMP TYPE TIMESTAMP.
Beim 1. Aufruf von get rfun time ist mmsec 0.
GET RUN TIME FIELD MMSEC.
GET TIME STAMP FIELD LF_TIMESTAMP.
CONVERT TIME STAMP LF_TIMESTAMP
TIME ZONE SY-ZONLO
INTO
DATE DATUM
TIME UZEIT.
WRITE: / DATUM, UZEIT, MMSEC.
SELECT * FROM MARA.
ENDSELECT.
GET RUN TIME FIELD MMSEC.
GET TIME STAMP FIELD LF_TIMESTAMP.
CONVERT TIME STAMP LF_TIMESTAMP
TIME ZONE SY-ZONLO
INTO
DATE DATUM
TIME UZEIT.
WRITE: / DATUM, UZEIT, MMSEC.
Here you can get performance-examples:
SE38->ENVIRONMENT->EXAMPLES->PERFORMANCE EXAMPLES
Hope it helps.
Regards, Dieter -
Typical scenario required your suggestion
Hi,
Database : Oracle 11.2.0
I have a table with some n number of columns and each column of the table should have only specific values only.
Eg1:
Column Possible Values
Col1 varchar2 100 or 150 or 130
Col2 number Between 1 and 9999
Col3 number 40 or 40.00
60 or 60.00
90 or 90.00
col4 varchar2 Week4 or Week6 Week8
If the column has any of the values other than specified then that row should be identified with the mis-matched columns.
Suggestions expected from your end.
Regards
Satya
Edited by: user608405 on Dec 26, 2012 1:22 AMuser608405 wrote:
Also we have to identify which column is mis-matched and there are about 65 to 70 columns in the tableA bad performer example (If you have Huge data, but solves your purpose):-
select 'COL1 is Bad' ref_col, col1, ... colN
from your_table
where col1 not in (100, 130, 150)
union all
select 'COL2 is Bad' ref_col, col1, ... colN
from your_table
where col2 not between 1 and 9999
union all
select 'COL3 is Bad' ref_col, col1, ... colN
from your_table
where to_number(col3) not in (40, 60, 90)
union all
select 'COL4 is Bad' ref_col, col1, ... colN
from your_table
where col4 not in ('Week4', 'Week6', 'Week8');An Alternative:-
create table dummy_base_table as
select * from base_table;
alter table dummy_base_table add constraint chk_col1 check (col1 in (100, 130, 150));
alter table dummy_base_table add constraint chk_col2 check (col2 between 1 and 9999);
alter table dummy_base_table add constraint chk_col3 check (to_number(col3) in (40, 60, 90)); --> Untested, but should work.
alter table dummy_base_table add constraint chk_col4 check (col4 in ('Week4', 'Week6', 'Week8'));
exec dbms_errlog.create_error_log('dummy_base_table');
insert into dummy_base_table
select column1, ..., columnN
from base_table
log errors
reject limit unlimited;
select * --> Records in this Table will be the records that do not follow the Constraints
from err$_dummy_base_table;Edited by: Purvesh K on Dec 26, 2012 3:10 PM
--Added Alternative of DBMS_ERRORLOG -
Using Vlookup over several tables
Hi I have read the following link
https://discussions.apple.com/message/16992843#16992843
I am looking to do something similar. I have got five tables for 5 different classes.
Column A has names B-K has results of the kids athletics achievements.
What I would like to do is find the best person across all tables at each event. I'm not sure if I can do a direct vlookup as it will be referencing from different tables.
Is my best option to create a new table which will show the best person for each event from just one table.
So basically i will create a new table per class table once I have found out who is best in that single class create another table that has best of all classes and then lookup that way? Although i'm adding tables it seems an easier way of possibly getting the end result?
Table 1 = Class 1
Table 2 = Class 2
Table 3 = Class 3
New table = best of class,1,2&3
New table = best?Here's an example of VLOOKUP operating across three tables to find the 'best' 'performance. examples are small, but scaleable. "Best' may be either 'largest' (distance or height events–row 2) or 'smallest' (timed events–row 4). Caveats below.
Formulas differ only in using MAX or MIN to determine the search value:
Bis::B2: =MAX(Class A :: A,Class B :: A,Class C :: A)
Bis::B4: =MIN(Class A :: A,Class B :: A,Class C :: A)
Lookup formulas are the same in both cases:
A2: =IFERROR(VLOOKUP(B,Class A :: A:B,2,FALSE),IFERROR(VLOOKUP(B,Class B :: A:B,2,FALSE),(VLOOKUP(B,Class C :: A:B,2,FALSE))))
A4: =IFERROR(VLOOKUP(B,Class A :: A:B,2,FALSE),IFERROR(VLOOKUP(B,Class B :: A:B,2,FALSE),VLOOKUP(B,Class C :: A:B,2,FALSE)))
Caveat: Like all Lookup formulas, this one will stop at the first occurrence of the value it is looking for. If more than one student has the 'best' score, only one name will be returned. That's not an insurmountable problem. but it is one that won't be solved using only LOOKUP or one of it's variations.
Regards,
Barry -
When using the UPSshell.exe to initiate a batch script via command line, one of the fields it lists is:
"Log Directory – File path where you want the UPSShell.exe log file written."
What exactly is written in this log? From what I can tell, it only captures an error while unsuccessfully trying to execute the Batch script itself listed in the "Script Name" section. It does not appear to capture any error once it has initiated that Batch script such as if whether or not it passed or failed. If the Batch script listed in the command line from UPSShell kicked off but the batch script errors out (fails on export for example) which log does that output to? It certainly does not appear in the 'Log Directory' field for UPSshell.exe.
Is this even possible or is this something that has to scripted in the BatchAction event? I would find it hard to believe that the out of the box functionality itself does not output a failed batch to a text file somewhere.
Any help and insight would be fantastic.The log caputres the 7 steps that the ups shell performs - examples are logging in. I usually make the log directory the same as Outbox\logs
-
Looking for methodology of calling a sub (FORM) in BSP
Hello all,
I'm relatively new to BSP. I've written a few one-off web-apps for our team, however one thing I find strange, and am probably barking up the wrong tree in terms of terminology, would be running a sub in BSP. Since it uses ABAP for the sytax, I would have thought that it would use the normal FORM ... ENDFORM, however this ends with an error about ENDMETHOD every time.
I come from an ASP background, and would at times want to use a sub to render an arbitrary chunk of HTML. I just can't find an equivalent for BSP. I've explored just using page fragments, and to a degree this accomplishes what I need. This is not really the best solution, as one or more page fragments may call another one which causes a recursive loop it seems like. Either way, I'd like to avoid page fragments.
Below is a simplified scenario of something I'm trying to acheive. Can anyone point me in the right direction?
<%@page language="abap"%>
<%FORM example.%>
<strong>abc123</strong>
<%ENDFORM.%>
<html>
<body>
Hello.<br>
<%PERFORM example.%>
</body>
</html>
Edited by: Mike Howles on Apr 2, 2008 11:40 PMHi,
You can put any code you like in a BSP layout between <% %>.
Anyway, if you really want to have something like a sub, you can create a class (transaction SE24), let's say ZCL_EXAMPLE, with one static method called example. This method will have the BSP page context as a parameter:
METHOD example.
DATA out TYPE REF TO if_bsp_writer.
out = i_page_context->get_out( ).
out->print_string( '<strong>abc123</strong>' ).
ENDMETHOD.
In the BSP layout:
<%@page language="abap"%>
<html>
<body>
Hello.<br>
<% zcl_example=>example( i_page_context = page_context ). %>
</body>
</html>
Regards,
Tanguy -
Disable Select List based on Button
I'm a newbie to APEX and I'm trying to disable a Select List only when an onClick action happens in a button(Create New). Otherwise the Select List should be enabled. I know I should be using JavaScript to perform this, but have no clue where to/how to start. Can any of you guide me to any useful threads or perform examples?
Workspace :SVENKAT
User ID :[email protected]
Password :lemope
I appreciate any help. Thanks!!!
ShaanShaan:
You should check out the demo application that is present in your workspace. The application exercises the basic features of APEX and is a good starting point for somebody that wants to learn APEX. For your particular need you should look at page 2 of the demo application. This page uses the 'Report/Form' APEX wizard. As you will see it allows you to 1) List all customers 2) Create a new customer 3) Update an existing customer 4) Delete an existing customer. All these features are implemented using a simple user interface(UI). The UI you have come up with is actually cumbersome and not very intuitive IMO. Take a few moments to get familiar with the demo application. Hopefully it will help you realize the shortcomings of the UI proposed by you. :)
http://apex.oracle.com/pls/otn/f?p=25444:2
Login as admin/svenkat
Varad -
Hi,
Iam working on screen desiging since last one week.
Unlike VB it is not so user friendly.
I want best source of examples and more stuff on screen designing. The best and more and more examples on each screen design element. The events to be triggered on selecting a particualr screen element etc...
please arrange the best and more and more examples to understand and develop self -explanatory topics on screen designingMPP Action Events
When ever acction is performed on Screen raises PAI event and We can handle where action events related Code Functionality.
PBO ( Process Before Output )
This event is similer to Initialization of Selection-Screen.
This event used In mpp to Add Title Bar,
Menu Bar for the screen. Default Properties of the screen can be loaded.
This event is fired when Screen is Loading for the first Time, and when ever action is Perfomed on the screen.
When ever PAI is called , the event reloads the screen, hence PBO will be called automatically.
IF the select statement is used in PBO, see that statement is declared in a conditional statement. Else the statement is executed for number of times when ever we load the screen and action is performed.
example code:
1) Top include file.
data : okcode like sy-ucomm,
a type i.
2) PBO and PAI code.
MODULE STATUS_0101 OUTPUT.
if a = 0.
MESSAGE S000(ZMSGCLS).
a = 1.
endif.
ENDMODULE.
MODULE USER_COMMAND_0101 INPUT.
CASE OKCODE.
WHEN 'RAISE'.
WHEN 'EXIT'.
LEAVE PROGRAM.
ENDCASE. -
Impdp Performing a Schema-Mode Import Example
The Oracle docs ( http://docs.oracle.com/cd/B12037_01/server.101/b10825/dp_import.htm#i1006564) has an example of performing a schema-mode import as follows:
impdp hr/hr SCHEMAS=hr DIRECTORY=dpump_dir1 DUMPFILE=expschema.dmp
EXCLUDE=CONSTRAINT, REF_CONSTRAINT, INDEX TABLE_EXISTS_ACTION=REPLACE
Looking carefully at this example what does " INDEX TABLE_EXISTS_ACTION=REPLACE" mean, specifically with respect to "INDEX"?
Does it mean it will drop the table and associated index if it already exists and then re-create and load it using the dump file contents?Index is an argument to "EXCLUDE" and Table_Exists_Action is separate option. In this example, It is excluding Indexes during import. It has nothing to do with "TABLE_EXISTS_ACTION=REPLACE"
Thanks -
Revision: 14580
Revision: 14580
Author: [email protected]
Date: 2010-03-04 09:28:35 -0800 (Thu, 04 Mar 2010)
Log Message:
Commit example showing how to perform additional load logic via a ProxyElement. The AsynchLoadingProxyElement (and its corresponding LoadTrait) load the proxied element, but doesn't expose its READY state to the outside world until it performs its own load operation (in this case it just runs a Timer). Include minor fix to other example.
Modified Paths:
osmf/trunk/apps/samples/framework/ExamplePlayer/org/osmf/examples/AllExamples.as
osmf/trunk/apps/samples/framework/ExamplePlayer/org/osmf/examples/loaderproxy/VideoProxyE lement.as
Added Paths:
osmf/trunk/apps/samples/framework/ExamplePlayer/org/osmf/examples/loaderproxy/AsynchLoadi ngProxyElement.as
osmf/trunk/apps/samples/framework/ExamplePlayer/org/osmf/examples/loaderproxy/AsynchLoadi ngProxyLoadTrait.asNope, what for?
If you know what you are doing and you discharge yourself there is no need for such.
BTW, those bands are not that safe, if you use them wrongly you can electrocute yourself pretty easily -
Any good example using JSF to perform search?
is there a good design pattern I can find somewhere
that uses jsf to search a list of words in a database
and returns the definiation on the same page
for example
mywords.jsp
submit jsf action
bean searches mysql
back to the same page mywords.jsp with the results listed
thanksIt is a little hard to tell what you are trying to do from your explanation. You would have a much higher success rate if you posted on the Machine Vision board in the Most Active Hardware Boards. Also, if you post an example it is good practice to state the version of software used. It is also helpful to save it to a previous version to allow a broader audience to see the example.
You stated that you have a "purpose of feature tracking among the series of images for my experiment using Normalized Cross-Correlation technique." Could you post this with a more detailed explanation on the Machine Vision board? Also to explain what type of suggestions or advice you are looking for from the example that you posted would allow myself and others on the forums to understand what you are looking for here.
Vince M
Applications Engineer
Maybe you are looking for
-
Neo2-F/A64 3000+/Zalman showing 40C at idle in BIOS v1.9!!
My Neo2-F w/ A64 3000+ Venice arrived last night, along with some other parts (will list full specs below). The BIOS version that it came with out-of-box is 1.9. When I go to System Health in BIOS, it shows my CPU temp as ~40 degrees C!! I don't th
-
Sorry, but can't post to Elements forum
I wanted to post to a PS Elements 2 forum but there's no Add Topic displayed anywhere. So, I've come here instead. I have PSE 2 on my Mac but the other day it wouldn't start. I upgraded from 10.3 to 10.5 recently. Is PSE 2 incompatible with 10.5? Bef
-
Transparency in CMYK color mode
Windows XP Pro, Photoshop CS3 It seems that one can only retain background transparency if image file is saved in PNG or GIF file format. It also seems that one cannot save to these file formats if graphic is in CMYK color mode - one must be in RBG
-
Why can i not view live webstream on some websites but can view it on internet explorer
when on a website i am not able to view the live web stream nether the recorded videos. can someone tell me why that is
-
Hi, select schemaname into schema_id from V$session where audsid = userenv('sessionid'); Iam using the above query in the after logon on database trigger (in the sys schema), but it does not give the right schema name, who ever logins to any schema i