Need to Improve Performance - PPCS4 For PC
I've done numerous searches for this topic within this forum and I got zero returns - so please no flaming if my question has been asked a zillion times.
Okay, I've got a decently strong system as sepc'd here:
-Intel i980x 3.33GHz Hexacore CPU
-24GB 2000MHz DDR3 RAM
-Dual 256GB SATA 3 Corsair SSD's running Raid 0
-Dual AMD HD6950 Video cards (flashed to 6970 specs) Crossfire
-W7U x64
-CS4 Suite w/all current updates
This system is immaculately clean and except for CS4 it has no extra apps loaded. It will run ANY game at max settings and rarely gets to 60% CPU usage.
Open up PP, drop a 30 sec AVCHD clip into the timeline and the application will barely playback anything in the timeline - with the timeline marker cruising along, the video that is displayed might show 2 or 3 frames max. Project settings are correct.
I can take that same 30 sec clip and open up 100 instances of it in various media players and they all play back nicely at the same time. Drop it into PP - nothing...
CPU usage while playing a clip in PP is minimal.
I haven't used Premiere in a while, but I was an early adopter way back when (15 years ago) and most interations of Premiere worked well for me.
Any ideas?
PPro, even the current CS5.5 version, does not work crossfire... and, in fact, having crossfire may actually cause problems
>Dual 256GB SATA 3 Corsair SSD's running Raid 0
If that is all you have, you are below drive specifications for editing video
You need OS and all software on your boot drive, and AT LEAST one other drive for video files
My 3 hard drives are configured as... (WD = Western Digital)
1 - 320G WD Win7 64bit Pro and all program installs
2 - 320G WD Win7 swap file and video project files
3 - 1T WD all video files... input & output files
Search Microsoft to find out how to redirect your Windows swap file
http://search.microsoft.com/search.aspx?mkt=en-US&setlang=en-US
Trying to use only ONE Hard Drive for Video Editing
You are a music conductor, with a baton that you use to point to various parts of the orchestra... this is like Windows pointing to various parts of the hard drive to do Windows housekeeping or to load program segments for various functions
Now, at the same time and with the same hand... while still using the baton to conduct the orchestra... pick up a bow and play a fiddle... this would be doing something with your video file at the same time as all the other work
You as a person cannot do both at the same time with the same hand
A computer is a LITTLE better, in that it can switch from one kind of task to another very quickly... but not quickly enough for EASY video editing
You need AT LEAST two hard drives (separate drives, never a partition http://forums.adobe.com/thread/650708?tstart=0 for more) with Windows (or Mac OS) and software on your boot drive, and video files on a 2nd drive so the boot drive is not slowed down by trying to do everything
I find that the three drives I use work very well for me, for editing AVCHD video... some people use a 4th drive, so video INPUT files are on drive three and all OUTPUT files are on drive four... I only bought a mid-tower case instead of a full tower case (my bad... but had to fit in the space available on my office desk!) so I use the three drives that will fit
Depending on your exact hardware (motherboard brand & model AND USB2 enclosure brand & model AND external hard drive brand & model) AND the type of video file, you may... or may NOT... be able to use an external USB2 hard drive for video editing
Steve Grisetti in the Premiere Elements forum http://forums.adobe.com/thread/856208?tstart=0 and Jim Simon in the Premiere Pro forum http://forums.adobe.com/thread/856433?tstart=0 use USB externals for editing
A USB3 hard drive connected to a motherboard with USB3 is supposed to be fast enough for video editing (I don't have such, so don't know) but eSata DOES have a fast enough data transfer for video editing... I have not used this eSata Dock... for reference only, YMMV and all the usual disclaimers
http://www.amazon.com/Thermaltake-BlacX-eSATA-Docking-Station/dp/B001A4HAFS/ref=cm_cmu_pg_ t
Similar Messages
-
Need to improve performance for bex queries
Dear Experts,
Here we have bex queries buit on BW infoset, further infoset is buit on 2 dsos and 4 infoobjects.
we have built secondary indices to the two dso assuming will improve performance, but still query execution time is very long.
Could you suggest me on this.
Thanks in advance,
MannuHI,
Thanks for the repsonse.
But as I have mentioned the infoset is based on DSOs and Infoobjects. So we could not perform on aggregates.
in RSRT
I have tried look in read mode of the query i.e. in 'x', which is also valid as qurey needs to fetch huge data.
Could you pls look into other possible areas, in order to improve this.
Thanks in advance,
Mannu -
Need to improve Performance of select...endselect query
Hi experts,
I have a query in my program like below with inner join of 3 tables.
In my program used select....endselect again inside this select...endselect statements used..
While executing in production taking lot of time to fetch records. Can anyone suggest to improve performance of below query urgently...
Greatly appreciated ur help...
SELECT MVKEDWERK MVKEMATNR MVKEVKORG MVKEVTWEG MARA~MATNR
MARAMTART ZM012MTART ZM012ZLIND ZM012ZPRICEREF
INTO (MVKE-DWERK , MVKE-MATNR , MVKE-VKORG , MVKE-VTWEG , MARA-MATNR
, MARA-MTART , ZM012-MTART , ZM012-ZLIND , ZM012-ZPRICEREF )
FROM ( MVKE
INNER JOIN MARA
ON MARAMATNR = MVKEMATNR
INNER JOIN ZM012
ON ZM012MTART = MARAMTART )
WHERE MVKE~DWERK IN SP$00004
AND MVKE~MATNR IN SP$00001
AND MVKE~VKORG IN SP$00002
AND MVKE~VTWEG IN SP$00003
AND MARA~MTART IN SP$00005
AND ZM012~ZLIND IN SP$00006
AND ZM012~ZPRICEREF IN SP$00007.
%DBACC = %DBACC - 1.
IF %DBACC = 0.
STOP.
ENDIF.
CHECK SP$00005.
CHECK SP$00004.
CHECK SP$00001.
CHECK SP$00002.
CHECK SP$00003.
CHECK SP$00006.
CHECK SP$00007.
clear Check_PR00.
select * from A004
where kappl = 'V'
and kschl = 'PR00'
and vkorg = mvke-vkorg
and vtweg = mvke-vtweg
and matnr = mvke-matnr
and DATAB le sy-datum
and DATBI ge sy-datum.
if sy-subrc = 0.
select * from konp
where knumh = a004-knumh.
if sy-subrc = 0.
Check_PR00 = konp-kbetr.
endif.
endselect.
endif.
endselect.
CHECK SP$00008.
clear Check_ZPR0.
select * from A004
where kappl = 'V'
and kschl = 'ZPR0'
and vkorg = mvke-vkorg
and vtweg = mvke-vtweg
and matnr = mvke-matnr
and DATAB le sy-datum
and DATBI ge sy-datum.
if sy-subrc = 0.
select * from konp
where knumh = a004-knumh.
if sy-subrc = 0.
Check_ZPR0 = konp-kbetr.
endif.
endselect.
endif.
endselect.
CHECK SP$00009.
clear ZFMP.
select * from A004
where kappl = 'V'
and kschl = 'ZFMP'
and vkorg = mvke-vkorg
and vtweg = mvke-vtweg
and matnr = mvke-matnr
and DATAB le sy-datum
and DATBI ge sy-datum.
if sy-subrc = 0.
select * from konp
where knumh = a004-knumh.
if sy-subrc = 0.
ZFMP = konp-kbetr.
endif.
endselect.
endif.
endselect.
CHECK SP$00010.
clear mastercost.
clear ZDCF.
select * from A004
where kappl = 'V'
and kschl = 'ZDCF'
and vkorg = mvke-vkorg
and vtweg = mvke-vtweg
and matnr = mvke-matnr
and DATAB le sy-datum
and DATBI ge sy-datum.
if sy-subrc = 0.
select * from konp
where knumh = a004-knumh.
if sy-subrc = 0.
ZDCF = konp-kbetr.
endif.
endselect.
endif.
endselect.
CHECK SP$00011.
clear masterprice.
clear Standardcost.
select * from mbew
where matnr = mvke-matnr
and bwkey = mvke-dwerk.
Standardcost = mbew-stprs.
mastercost = MBEW-BWPRH.
masterprice = mBEW-BWPH1.
endselect.
ADD 1 TO %COUNT-MVKE.
%LINR-MVKE = '01'.
EXTRACT %FG01.
%EXT-MVKE01 = 'X'.
EXTRACT %FGWRMVKE01.
ENDSELECT.
best rgds..
hari..Hi there.
Some advices:
- why going to MVKE first and MARA then? You will find n rows in MVKE for 1 matnr, and then go n times to the same record in MARA. Do the oposite, i.e, go first to MARA (1 time per matnr) and then to MVKE.
- avoid select *, you will save time.
- use trace or measure performance in tcodes ST05 and SM30.
- replace:
select * from konp
where knumh = a004-knumh.
if sy-subrc = 0.
Check_ZPR0 = konp-kbetr.
endif.
endselect.
by
select * from konp
where knumh = a004-knumh.
Check_ZPR0 = konp-kbetr.
exit.
endselect.
Here, if I understood, you only need to atribute kbetr value to Check_ZPR0 if selecting anything (don't need the IF because if enters in select, subrc always equal to 0, and also don't need to do it several times from same a004-knumh - reason for the EXIT.
Hope this helps.
Regards.
Valter Oliveira.
Edited by: Valter Oliveira on Jun 5, 2008 3:16 PM -
Need to Improve Performance on a Spatial Boundary Crossing Calculator
I am attempting to compare a series of geometries to calculate a number of statistics where they overlap. Essentially I have a table of 50,000 lines and another table of 1000 circles. I need to determine which lines overlap each circle, and for each intersection, I need to determine how much time and distance each line spends in each circle.
I have a PL/SQL program that performs this operation now and it works. The problem is that it takes far too long.
Here is a summary of how the job runs:
1) For each LINE, determine which CIRCLES it overlaps with
2) Each each LINE/CIRCLE pair, determine the intersection points
3) Insert the intersection points in a temporary table
4) Once you have all the points, pair them up as Entry/Exit points for each circle
5) Calculate duration (time) and distance between entry and exit points
6) Return to step 1 for next LINE
There are multiple loops here:
1-6 is the outer loop performed once for each of the 50,000 lines.
2-3 is performed once for each line/circle pair (probable avg of 5 circles per line)
4-5 is performed once again for each line/circle pair
Even if the process only takes a couple of seconds per LINE, we are still taking more than 24 hours to process, which is not acceptable.
This original process was written with 9i, and I am now running 10gR2, so I know there are new features that should help. For starters, I think I can use SDO_JOIN in place of the original outer loop to generate a complete list of geometry interactions in one query. Of course, I am still concerned about how long that might take.
Even more troubling is, if that works, I still don't see how to improve the rest of the calculations. Any suggestions would be appreciated.No, I don't mind providing it.
Here it is:
-- cre_&stab._bndxing.sql
--Procedure definition of bndxings
def stab=&1
CREATE OR REPLACE PROCEDURE Find_&stab._bndxings
(theDate IN DATE, theStr IN VARCHAR2) IS
--Select flights from table
CURSOR FCursor IS
SELECT new_Flight_Index,
Acid,
New_Act_Date,
Dept_Aprt,
Dep_Time,
Arr_Aprt,
Arr_Time,
Acft_Type,
Physical_Class,
User_Class,
Nrp,
d_lat,
d_lon,
a_lat,
a_lon,
flight_track
FROM jady.Flight
WHERE new_act_date = theDate
AND flight_track IS NOT NULL
AND substr(acid,1,1) = theStr
--AND acid in (select acid from name_temp)
--AND acid = 'AAL1242'
ORDER BY acid,new_flight_index;
--Temp vars for storing flight info
fi_var NUMBER;
acid_var VARCHAR2(7);
dep_time_var DATE;
arr_time_var DATE;
F_Rec FCursor%ROWTYPE;
--Temp vars for flight
tcnt INTEGER;
cur_lat NUMBER;
cur_lon NUMBER;
last_lat NUMBER;
last_lon NUMBER;
--Temp vars for airspace and xing geometries
aname VARCHAR2(20);
bxings MDSYS.SDO_GEOMETRY;
bxcnt INTEGER;
--Select xings made from temp bndxing table
CURSOR XCursor IS
SELECT Act_Date,
Name,
Lon,
Lat,
Alt,
Time,
OPS
FROM bndxing_tmp
WHERE Flight_Index = fi_var
AND Acid = acid_var
ORDER BY Name,Time;
--Temp vars for paired in/out xings
ad date;
ilon NUMBER;
ilat NUMBER;
ialt NUMBER;
isec NUMBER;
iops NUMBER;
olon NUMBER;
olat NUMBER;
oalt NUMBER;
osec NUMBER;
oops NUMBER;
gcr NUMBER;
dist NUMBER;
dura NUMBER;
ops VARCHAR2(1);
i INTEGER;
i_aname VARCHAR2(20);
o_aname VARCHAR2(20);
names_match BOOLEAN;
theSeq NUMBER;
same_airport_no_tzdata BOOLEAN;
-- Cursor and variables for bndxing sequencing
CURSOR BCursor IS
SELECT * FROM bndxing
WHERE act_date = theDate
AND Acid = acid_var
AND Flight_Index = fi_var
ORDER BY in_time
FOR UPDATE;
BRec BCursor%ROWTYPE;
--Error logging variable
strErrorMessage VARCHAR2(255);
BEGIN --Start of Main Loop
--Loop for each flight in table
OPEN FCursor;
FETCH FCursor INTO F_Rec;
-- FOR f IN FCursor LOOP
WHILE FCursor%FOUND LOOP
fi_var:= F_Rec.new_Flight_Index;
acid_var := F_Rec.acid;
arr_time_var := F_Rec.arr_time;
dep_time_var := F_Rec.dep_time;
last_lat := -10000; --initializtion
last_lon := -10000; --initializtion
-- DEBUG STATEMENT
/* Insert into bnd_error values (err_seq.NEXTVAL,
sysdate,
F_Rec.Acid,
F_Rec.new_Flight_Index,
'Checkpoint 1');
--Add departing xing to temp table if in US airspace
DECLARE
CURSOR DepCur IS
SELECT Name
FROM &stab.
WHERE SDO_RELATE(Airspace,
MDSYS.SDO_GEOMETRY(2001,8307,
MDSYS.SDO_POINT_TYPE(F_Rec.d_lon,F_Rec.d_lat,null),
null, null),
'mask=CONTAINS querytype=WINDOW') = 'TRUE';
BEGIN -- Start of Departing Airspace Loop
FOR c in DepCur LOOP
INSERT INTO Bndxing_Tmp VALUES (F_Rec.new_Flight_Index,
F_Rec.acid,
F_Rec.New_Act_Date,
c.name,
2,
F_Rec.d_lon,
F_Rec.d_lat,
0,
(F_Rec.Dep_Time-F_Rec.New_Act_Date)*86400);
END LOOP;
EXCEPTION
WHEN NO_DATA_FOUND THEN NULL;
WHEN OTHERS THEN
strErrorMessage := SQLERRM;
INSERT INTO bnd_error VALUES (err_seq.NEXTVAL,
sysdate,
F_Rec.Acid,
F_Rec.new_Flight_Index,
'Exception from Departing Airspace loop: ' || strErrorMessage);
COMMIT;
END; -- End of Departing Airspace Loop
--Add arrival xing to temp table if in US airspace
DECLARE
CURSOR ArrCur IS
SELECT name
FROM &stab.
WHERE SDO_RELATE(Airspace,
MDSYS.SDO_GEOMETRY(2001,8307,
MDSYS.SDO_POINT_TYPE(F_Rec.a_lon, F_Rec.a_lat, null),
null, null),
'mask=CONTAINS querytype=WINDOW') = 'TRUE';
BEGIN -- Start of Arrival Airspace Loop
FOR c IN ArrCur LOOP
INSERT INTO Bndxing_Tmp VALUES (F_Rec.new_Flight_Index,
F_Rec.acid,
F_Rec.New_Act_Date,
c.name,
1,
F_Rec.a_lon,
F_Rec.a_lat,
0,
(F_Rec.Arr_Time - F_Rec.New_Act_Date)*86400);
END LOOP;
EXCEPTION
WHEN NO_DATA_FOUND THEN NULL;
WHEN OTHERS THEN
strErrorMessage := SQLERRM;
INSERT INTO bnd_error VALUES (err_seq.NEXTVAL,
sysdate,
F_Rec.Acid,
F_Rec.new_Flight_Index,
'Exception from Arrival Airspace loop: ' || strErrorMessage);
COMMIT;
END; -- End of Arrival Airspace Loop
--DEBUG STATEMENT
/* Insert into bnd_error values (err_seq.NEXTVAL,
sysdate,
F_Rec.Acid,
F_Rec.new_Flight_Index,
'Checkpoint 4');
--Find all intersections between the flight track and airspace boundaries and insert into temp table
DECLARE
--Find airspace boundaries that interact with the flight track
CURSOR CCursor IS
SELECT Name, Boundary
FROM &stab.
WHERE SDO_RELATE(boundary,F_Rec.flight_track,'mask=OVERLAPBDYDISJOINT querytype=WINDOW')='TRUE';
BEGIN
FOR c IN CCursor LOOP
bxings := SDO_GEOM.SDO_INTERSECTION(c.boundary,F_Rec.flight_track,10);
bxcnt:=bxings.sdo_ordinates.count;
LOOP
INSERT INTO bndxing_tmp VALUES (F_Rec.new_Flight_Index,
F_Rec.acid,
F_Rec.New_Act_Date,
c.name,
0,
bxings.sdo_ordinates(bxcnt-3),
bxings.sdo_ordinates(bxcnt-2),
bxings.sdo_ordinates(bxcnt-1),
SDO_LRS.FIND_MEASURE(F_Rec.flight_track,
MDSYS.SDO_GEOMETRY(2001,8307,NULL,
MDSYS.SDO_ELEM_INFO_ARRAY(1,1,1),
MDSYS.SDO_ORDINATE_ARRAY(bxings.sdo_ordinates(bxcnt-3),
bxings.sdo_ordinates(bxcnt-2)))));
bxcnt := bxcnt - 4;
EXIT WHEN (bxcnt < 1);
END LOOP;
END LOOP; -- end CCursor LOOP
EXCEPTION
WHEN OTHERS THEN
strErrorMessage := SQLERRM;
INSERT INTO bnd_error VALUES (err_seq.NEXTVAL,
sysdate,
F_Rec.Acid,
F_Rec.new_Flight_Index,
'Exception from bndxing loop: ' || strErrorMessage);
COMMIT;
END;
--DEBUG STATEMENT
/* Insert into bnd_error values (err_seq.NEXTVAL,
sysdate,
F_Rec.Acid,
F_Rec.new_Flight_Index,
'Checkpoint 6');
--After all xings for a flight have been collected sort Xings by name and time and grab pairwise
theSeq :=0;
OPEN XCursor;
BEGIN -- Start of Stats Loop
LOOP
FETCH XCursor INTO ad, i_aname, ilon, ilat, ialt, isec, iops; --CHANGED CODE
EXIT WHEN XCursor%NOTFOUND ;
FETCH XCursor INTO ad, o_aname, olon, olat, oalt, osec, oops; --CHANGED CODE
EXIT WHEN XCursor%NOTFOUND ;
names_match := (i_aname = o_aname); --NEW CODE
WHILE not names_match LOOP --NEW CODE
i_aname := o_aname; --NEW CODE
ilon := olon; --NEW CODE
ilat := olat; --NEW CODE
ialt := oalt; --NEW CODE
isec := osec; --NEW CODE
iops := oops; --NEW CODE
FETCH XCursor INTO ad, o_aname, olon, olat, oalt, osec, oops; --NEW CODE
EXIT WHEN XCursor%NOTFOUND; --NEW CODE
names_match := (i_aname = o_aname); --NEW CODE
END LOOP; --NEW CODE
--Calculate stats
BEGIN -- Start of In Values Loop
i:=4;
IF (iops<>2) THEN
-- Did not depart from this airspace, calculate entry altitude into airspace.
LOOP
i:=i+4;
EXIT WHEN F_Rec.flight_track.sdo_ordinates(i)>isec;
END LOOP;
IF ( F_Rec.flight_track.sdo_ordinates(i-1) = F_Rec.flight_track.sdo_ordinates(i-5) ) THEN
ialt := F_Rec.flight_track.sdo_ordinates(i-1);
ELSE
ialt:=SDO_LRS.FIND_MEASURE(
MDSYS.SDO_GEOMETRY(3302,8307,NULL,
MDSYS.SDO_ELEM_INFO_ARRAY(1,2,1),
MDSYS.SDO_ORDINATE_ARRAY(F_Rec.flight_track.sdo_ordinates(i-7),
F_Rec.flight_track.sdo_ordinates(i-6),
F_Rec.flight_tracK.sdo_ordinates(i-5),
F_Rec.flight_track.sdo_ordinates(i-3),
F_Rec.flight_track.sdo_ordinates(i-2),
F_Rec.flight_track.sdo_ordinates(i-1))),
MDSYS.SDO_GEOMETRY(2001,8307,NULL,
MDSYS.SDO_ELEM_INFO_ARRAY(1,1,1),
MDSYS.SDO_ORDINATE_ARRAY(ilon,ilat)));
END IF;
END IF;
EXCEPTION
WHEN OTHERS THEN
strErrorMessage := SQLERRM;
INSERT INTO bnd_error VALUES (err_seq.NEXTVAL,
sysdate,
F_Rec.Acid,
F_Rec.new_Flight_Index,
'Exception from In Values section: ' || strErrorMessage);
COMMIT;
END; -- End of In Values Loop
BEGIN -- Start of Out Values Loop
i:=4;
IF (oops<>1) THEN
-- Did not arrive in this airspace, calculate departure altitude from airspace.
LOOP
i:=i+4;
EXIT WHEN F_Rec.flight_track.sdo_ordinates(i)>osec;
END LOOP;
--Find alt at this time
IF ( F_Rec.flight_track.sdo_ordinates(i-1) = F_Rec.flight_track.sdo_ordinates(i-5) ) THEN
oalt := F_Rec.flight_track.sdo_ordinates(i-1);
ELSE
oalt:=SDO_LRS.FIND_MEASURE(
MDSYS.SDO_GEOMETRY(3302, 8307, NULL,
MDSYS.SDO_ELEM_INFO_ARRAY(1,2,1),
MDSYS.SDO_ORDINATE_ARRAY(F_Rec.flight_track.sdo_ordinates(i-7),
F_Rec.flight_track.sdo_ordinates(i-6),
F_Rec.flight_track.sdo_ordinates(i-5),
F_Rec.flight_track.sdo_ordinates(i-3),
F_Rec.flight_track.sdo_ordinates(i-2),
F_Rec.flight_track.sdo_ordinates(i-1))),
MDSYS.SDO_GEOMETRY(2001,8307,NULL,
MDSYS.SDO_ELEM_INFO_ARRAY(1,1,1),
MDSYS.SDO_ORDINATE_ARRAY(olon,olat)));
END IF;
END IF;
EXCEPTION
WHEN OTHERS THEN
strErrorMessage := SQLERRM;
INSERT INTO bnd_error VALUES (err_seq.NEXTVAL,
sysdate,
F_Rec.Acid,
F_Rec.new_Flight_Index,
'Exception from Out Values loop: ' || strErrorMessage);
COMMIT;
END; -- End of Out Values Loop
BEGIN -- Start of Finish Loop
--Find GCR, actual distance and duration in airspace
gcr := SDO_GEOM.SDO_DISTANCE(MDSYS.SDO_GEOMETRY(2001,8307,
MDSYS.SDO_POINT_TYPE(ilon,ilat,NULL),NULL,NULL),
MDSYS.SDO_GEOMETRY(2001,8307,
MDSYS.SDO_POINT_TYPE(olon,olat,NULL),NULL,NULL),
10,'unit=naut_mile');
--DEBUG STATEMENT
/* Insert into bnd_error values (err_seq.NEXTVAL,
sysdate,
F_Rec.Acid,
F_Rec.new_Flight_Index,
'In Finish Loop: isec: ' ||isec||' osec: '||osec
||' airspace: '||i_aname);
dist := SDO_GEOM.SDO_LENGTH(SDO_LRS.CLIP_GEOM_SEGMENT(F_Rec.flight_track,isec,osec),10,'unit=naut_mile');
dura := (osec - isec);
--Set OPS Flag
iops := iops + oops;
IF (iops=3) THEN
ops := 'B';
ELSIF (iops=2) THEN
ops := 'D';
ELSIF (iops=1) THEN
ops := 'A';
ELSE
ops := 'O';
END IF;
theSeq := theSeq + 1;
--Insert into Bndxing table
INSERT INTO Bndxing VALUES (F_Rec.Acid,
F_Rec.new_Flight_Index,
F_Rec.New_Act_Date,
theSeq,
F_Rec.Dept_Aprt,
F_Rec.Arr_Aprt,
i_aname,
round(ilon,3),
round(ilat,3),
ialt,
isec/86400 + ad,
NULL, -- IN_SPEED (TBD)
round(olon,3),
round(olat,3),
oalt,
osec/86400 + ad,
NULL, -- OUT_SPEED (TBD)
gcr,
dist,
dura,
ops, -- CHANGED CODE
nvl(F_Rec.Acft_Type,'----'),
NULL, -- IF_FLAG (NULL)
nvl(F_Rec.Physical_Class,'-'),
nvl(F_Rec.User_Class,'-'),
F_Rec.Nrp,
NULL, -- FFS_FLAG (NULL)
NULL, -- ER_SG (NULL)
NULL, -- ER_TI (NULL)
NULL, -- ER_ZT (NULL)
NULL, -- ER_DU (NULL)
NULL, -- ER_SP (NULL)
NULL -- ER_BD (NULL)
DELETE FROM bndxing_tmp
WHERE acid=F_Rec.Acid and flight_index=F_Rec.new_Flight_Index;
COMMIT;
EXCEPTION
WHEN OTHERS THEN
strErrorMessage := SQLERRM;
INSERT INTO bnd_error VALUES (err_seq.NEXTVAL,
sysdate,
F_Rec.Acid,
F_Rec.new_Flight_Index,
'Exception from Finish loop: ' || strErrorMessage);
COMMIT;
END; -- End of Finish Loop
END LOOP;
EXCEPTION
WHEN OTHERS THEN
strErrorMessage := SQLERRM;
INSERT INTO bnd_error VALUES (err_seq.NEXTVAL,
sysdate,
F_Rec.Acid,
F_Rec.new_Flight_Index,
'Exception from Stats loop: ' || strErrorMessage);
COMMIT;
END; -- End of Stats Loop
--Reset cursor and track geometry
CLOSE XCursor;
F_Rec.flight_track.sdo_ordinates.delete;
-- delete from hist_bndxing_tmp
-- where acid=acid_var and new_flight_index=fi_var;
FETCH FCursor INTO F_Rec;
END LOOP;
--DEBUG STATEMENT
/* INSERT INTO bnd_error VALUES (err_seq.NEXTVAL,
sysdate,
acid_var,
fi_var,
'Checkpoint 7');
CLOSE FCursor;
theSeq := 1;
OPEN BCursor;
LOOP
FETCH BCursor INTO BRec;
IF BCursor%NOTFOUND THEN
EXIT;
END IF;
UPDATE bndxing
SET segment = theSeq
WHERE CURRENT OF BCursor;
theSeq := theSeq + 1;
END LOOP;
CLOSE BCursor;
EXCEPTION
WHEN OTHERS THEN
strErrorMessage := SQLERRM;
Insert into bnd_error values (err_seq.NEXTVAL,
sysdate,
acid_var,
fi_var,
'Exception from main: ' || strErrorMessage);
COMMIT;
CLOSE FCursor;
END; -- End of Main Loop
SHOW ERRORS;
--exit; -
Need help in Performance tuning for function...
Hi all,
I am using the below algorithm for calculating the Luhn Alogorithm to calculate the 15th luhn digit for an IMEI (Phone Sim Card).
But the below function is taking about 6 min for 5 million records. I had 170 million records in a table want to calculate the luhn digit for all of them which might take up to 4-5 hours.Please help me performance tuning (better way or better logic for luhn calculation) to the below function.
A wikipedia link is provided for the luhn algorithm below
Create or Replace FUNCTION AddLuhnToIMEI (LuhnPrimitive VARCHAR2)
RETURN VARCHAR2
AS
Index_no NUMBER (2) := LENGTH (LuhnPrimitive);
Multiplier NUMBER (1) := 2;
Total_Sum NUMBER (4) := 0;
Plus NUMBER (2);
ReturnLuhn VARCHAR2 (25);
BEGIN
WHILE Index_no >= 1
LOOP
Plus := Multiplier * (TO_NUMBER (SUBSTR (LuhnPrimitive, Index_no, 1)));
Multiplier := (3 - Multiplier);
Total_Sum := Total_Sum + TO_NUMBER (TRUNC ( (Plus / 10))) + MOD (Plus, 10);
Index_no := Index_no - 1;
END LOOP;
ReturnLuhn := LuhnPrimitive || CASE
WHEN MOD (Total_Sum, 10) = 0 THEN '0'
ELSE TO_CHAR (10 - MOD (Total_Sum, 10))
END;
RETURN ReturnLuhn;
EXCEPTION
WHEN OTHERS
THEN
RETURN (LuhnPrimitive);
END AddLuhnToIMEI;
http://en.wikipedia.org/wiki/Luhn_algorithmAny sort of help is much appreciated....
Thanks
RedeThere is a not needed to_number function in it. TRUNC will already return a number.
Also the MOD function can be avoided at some steps. Since multiplying by 2 will never be higher then 18 you can speed up the calculation with this.
create or replace
FUNCTION AddLuhnToIMEI_fast (LuhnPrimitive VARCHAR2)
RETURN VARCHAR2
AS
Index_no pls_Integer;
Multiplier pls_Integer := 2;
Total_Sum pls_Integer := 0;
Plus pls_Integer;
rest pls_integer;
ReturnLuhn VARCHAR2 (25);
BEGIN
for Index_no in reverse 1..LENGTH (LuhnPrimitive) LOOP
Plus := Multiplier * TO_NUMBER (SUBSTR (LuhnPrimitive, Index_no, 1));
Multiplier := 3 - Multiplier;
if Plus < 10 then
Total_Sum := Total_Sum + Plus ;
else
Total_Sum := Total_Sum + Plus - 9;
end if;
END LOOP;
rest := MOD (Total_Sum, 10);
ReturnLuhn := LuhnPrimitive || CASE WHEN rest = 0 THEN '0' ELSE TO_CHAR (10 - rest) END;
RETURN ReturnLuhn;
END AddLuhnToIMEI_fast;
/My tests gave an improvement for about 40%.
The next step to try could be to use native complilation on this function. This can give an additional big boost.
Edited by: Sven W. on Mar 9, 2011 8:11 PM -
SLOW Query ... Need help improving performance
Database: Oracle 8i
Note: I don't have a whole lot of experience with writing queries, so please forgive me for any dumb mistakes I most likely made.
I have a query in which I have a SUM in two levels. I think this is probably the root cause of the very slow performance of the query. However, I just don't see any way around it, and can't come up with any other ways to speed up the query. The query itself only returns one line, the summary line. And, by slow, I mean it can take up to an hour or two. This is a query I need to run multiple times, based on some parameters that I cannot query from a database.
The query basically calculates the current unit cost of a part. It has to sum up the issue cost of the part (cost of material issued to the part's order), the actual dollars put into a part (labor, etc.), and the burden dollars associated with the part. This sum has to be divided by the total quantity of parts completed on the part's order to get the unit cost. I have to account for the possibility that the quantity complete is 0, so that I don't end up dividing by 0.
Below is my query, and sample data for it:
SELECT a.part_nbr
, a.mo_nbr
, a.unit_iss_cost
, CASE
WHEN a.qty_complete_ind ='Nonzero'
THEN SUM(a.act_dlrs/a.qty_complete)
ELSE 0
END AS unit_dlrs
, CASE
WHEN a.qty_complete_ind ='Zero'
THEN SUM(a.act_dlrs)
ELSE 0
END AS qty_0_dlrs
FROM ( SELECT act.part_nbr AS part_nbr
, act.order_nbr || '-' || act.sub_order_nbr AS mo_nbr
, ic.unit_iss_cost AS unit_iss_cost
, SUM (
act.act_dlrs_earned +
act.act_brdn_dls_earned +
act.tool_dlrs_earned +
act.act_fix_brdn_dls_ea
) AS act_dlrs
, ord.qty_complete AS qty_complete
, CASE
WHEN ord.qty_complete <>0
THEN 'Nonzero'
ELSE 'Zero'
END AS qty_complete_ind
FROM ACT act
, ISSUE_COST ic
, ORD ord
WHERE ord.ord_nbr =act.order_nbr AND
ord.sub_ord_nbr =act.sub_order_nbr AND
ord.major_seq_nbr =act.maj_seq_nbr AND
ic.ord_nbr =act.order_nbr AND
ic.sub_ord_nbr =act.sub_order_nbr AND
(act.order_nbr =LPAD(?,10,'0')) AND
(act.sub_order_nbr =LPAD(?,3,'0')) AND
(act.activity_date <=?)
GROUP BY act.part_nbr
, act.order_nbr || '-' || act.sub_order_nbr
, act.maj_seq_nbr
, ord.qty_complete
, ic.unit_iss_cost
) a
GROUP BY a.part_nbr
, a.mo_nbr
, a.unit_iss_cost
, a.qty_complete_ind
CREATE TABLE ACT
creation_date date
, c_id number (5,0)
, part_nbr varchar(25)
, order_nbr varchar(10)
, sub_order_nbr varchar(3)
, maj_seq_nbr varchar(4)
, act_dlrs_earned number (15,2)
, act_brdn_dls_earned number (15,2)
, tool_dlrs_earned number (15,2)
, act_fix_brdn_dls_ea number (15,2)
, activity_date date
CONSTRAINT ACT_PK
PRIMARY KEY (creation_date, c_id)
);--Please note, issue_cost is actually a view, not a table, but by itself it runs very quickly
CREATE TABLE ISSUE_COST
unit_iss_cost number(15,2)
, ord_nbr varchar(10)
, sub_ord_nbr varchar(3)
);--Please note, ord table has a couple of foreign keys that I did not mention
CREATE TABLE ORD
ord_nbr varchar(10)
, sub_ord_nbr varchar(3)
, major_seq_nbr varchar(4)
, qty_complete number (13,4)
);Sample tables:
ACT
creation_date c_id part_nbr order_nbr sub_order_nbr maj_seq_nbr act_dlrs_earned act_brdn_dls_earned tool_dlrs_earned act_fix_brdn_dls_ea activity_date
01/02/2000 12345 ABC-123 0000012345 001 0010 10.00 20.00 0.00 0.00 01/01/2000
01/02/2000 12345 XYZ-987 0000054321 001 0030 100.00 175.00 10.00 10.00 01/01/2000
01/03/2000 12347 ABC-123 0000012345 001 0020 25.00 75.00 5.00 1.00 01/02/2000
01/03/2000 12348 ABC-123 0000012345 001 0020 75.00 120.00 25.00 5.00 01/02/2000
01/03/2000 12349 XYZ-987 0000054321 001 0050 50.00 110.00 0.00 0.00 01/02/2000
01/04/2000 12350 ABC-123 0000012345 001 0030 25.00 40.00 0.00 0.00 01/03/2000
ISSUE_COST
unit_iss_cost ord_nbr sub_ord_nbr
125.00 0000012345 001
650.00 0000054321 001
ORD
ord_nbr sub_ord_nbr major_seq_nbr qty_complete
0000012345 001 0010 10
0000012345 001 0020 10
0000012345 001 0030 0
0000054321 001 0030 20
0000054321 001 0050 19If insert statements are needed for the sample tables, let me know and I'll go re-figure out how to write them. (I only have read-only access to the database I'm querying, so creating tables and inserting values aren't things I ever do).
Thanks in advance!For diagnosing where the time of your query is being spent, we don't need create table and insert statements. If we execute your query with only a handful of rows, the query will be very fast. What we do need to know, is the plan the optimizer takes to compute your result set, and the cardinalities of each step.
Please read When your query takes too long ... carefully and post the full explain plan and tkprof output.
Regards,
Rob. -
Need to improve performance of oracle query
Hi ,
Currently i have written query to get maximun salary from XYZ company like this
select salary from (
select salary from employee
where company='XYZ'
order by salary desc )
where rownum<2;
i thought of replacing the same with following query
select max(salary)
from employee
where company='XYZ';
Which one will be faster ? can you provide some statistical data.It will be good if you share some oracle documentation for this.
Thanks,
KannanMost likely the second one. And in any case: the second one is much more straightforward and readable (i.e. the syntax describes exactly what you want: get the max salary). In that way, your application is better maintainable (i.e. cheaper and better in the long run), and likely more easy to optimize for the database. And yes, in this case it's a simple query, but if you're thinking of writing even simple queries in the style of your first example, I'd hate to think of what more complex queries would get to look like...
-
BBM needs to improve BBM features for BB users.
As my username says, I am a diehard blackberry user. While everyone jumped ship to android, I stayed. I loved my curve and when it began to speak in tongues (ie. type gibberish, open and close programmes on its own, flip between screens) instead of switching to nokia as my rogers plan covered I paitiently waited for the white Q10. I still love my Q10. I still feel that BlackBerry makes great products that are both functional and durable. However my issue with Blackberry is in how they treat loyal customers. While all my friends got Galaxy phones... I stayed with my Q10. When BlackBerry launched the bbm4all campaign... I urged all my friends to get it despite the initial glitches... and now I'm getting frustrated. Despite being loyal and owning a BB, doing my part to help a local company...I get ads and am unable to use timed messages or message retraction, I am unable to create a custom PIN. I get constant reminders to rate BBM but my opinion on BBM gets worse when I get a a corporation ad in the form of a BBM invite. Despite having a BB and being a loyal BB user since the Research in Motion days... why must I pay monthly to get access to features like message retraction that up until the OS update I had for free? I am a student, I do not use BB for its security, I use my phone for texting, BBMing, taking photos, checking the weather and occasionally playing Magic: Realms... I love my Q10 for the physical keyboard and sleek design... however why does blackberry treat BB users and non-BB users as equal? Apart from the physical keyboard and the security, what makes BB special? BBM used to be a huge selling point for me, when they opened it to everyone BB got less special but I thought that they would keep the BBM that BBs use as an upgraded version to the BBM released for apple and android. I assumed this when I noticed that video chat was only for BB to BB chats. Though this particular feature is nice, it isn't terribly useful when 80% of your BBM contacts do not have BBs. I get frustrated when I type the wrong message to someone and I can't retract it without paying a monthly fee. I get frustrated when I get ads when I am using the BBM app instead of Hub. I understand that BB is a company and as such making money is the priority however why can they not take care of their own? My suggestion to Blackberry is to give BBM to BB users with upgraded features. Yes the video calling feature is nice but it isn't terribly important to me. For non-BB usersm BlackBerry should do the following:Charge a slightly higher^ monthly fee for subscriptions for timed messages/photosCharge a slightly higher monthly fee for subscriptions for message retractionCharge a slightly higher monthly fee for custom PINsCharge a slightly higher monthly fee for the removal of ads Blackberry should do the following, as a thank you to people who are loyal like myself...Remove subscriptions in the next version of BBMAllow unlimited timed messages and timed photos for freeAllow unlimited message retraction for freeMake custom PINs a one time fee Remove ads in the next version of BBM for free Due to the ratio of BB users to non-BB users I think that Blackberry skimping on approximately $24annually* / BB user would be worth it when trading for an increase in customer satisfaction. Loyalists stayed with Blackberry through everything and I think that sometimes the company forgets that without BB users there would not have been a company today. I just feel that Blackberry's treatment of BB users doesn't reflect the dedication that we have shown the company and I just do not think that is fair. Please Like this post if you agree. Thank you for your time, Haley ^ $1.29 based on a small poll of non-BB users in my BBM list was considered a fair price * based on the privacy and no ads subscription monthly price of $0.99
Hi
Thanks for your feedback and support! I've shared your comments internally
-
How to tune this query for the improve performance ?
Hi All,
How to tune this query for the improve performance ?
select a.claim_number,a.pay_cd,a.claim_occurrence_number,
case
when sum(case
when a.payment_status_cd ='0'
then a.payment_est_amt
else 0
end
)=0
then 0
else (sum(case
when a.payment_status_cd='0'and a.payment_est_amt > 0
then a.payment_est_amt
else 0
end)
- sum(case
when a.payment_status_cd<>'0'
then a.payment_amt
else 0
end))
end as estimate
from ins_claim_payment a
where a.as_of_date between '31-jan-03' and '30-aug-06'
and ( a.data_source = '25' or (a.data_source between '27' and '29'))
and substr(a.pay_cd,1,1) IN ('2','3','4','8','9')
group by a.claim_number, a.pay_cd, a.claim_occurrence_number
Thank you,
MckaMcka
As well as EXPLAIN PLAN, let us know what proportion of rows are visited by this query. It may be that it is not using a full table scan when it should (or vice versa).
And of course we'd need to know what indexes are available, and how selective they are for the predicated you have in this query ...
Regards Nigel -
I have a MAC Pro from 2011 currently running MAC OS 10.9.5. This weekend I cloned the MAC HD drive to a new SSD drive for improved performance. The clone was completed successfully with no errors. After the clone completed I successfully restarted my system using the SSD as the boot device. I then successfully tested all of my products, including Photoshop CS6 and all of its plug-ins. I successfully tested the key features that I frequently use. Today while attempting to launch Photoshop CS6 a message is being displayed indicating that a scratch disk cannot be found. All drives are available on the system via the Finder and Disk Utility. I can access all drives including the old MAC HD which is no longer the boot device. I've even attempted to launch Photoshop from the old device yet the same error persist. Is there a way to review/edit/change Photoshop preferences if Photoshop doesn't launch? I've even restarted my system several times to see if that would resolve the issues. Does anyone have any recommendations for this issue? Have you previously address this issue?
Thank you Gregg WilliamsBoilerplate text:
Reset Preferences
http://forums.adobe.com/thread/375776
1) Close the program and press Ctrl+Alt+Shift/Cmd+Option+Shift during startup (not reversible)
or
2) Move the Folder. See:
http://www.bugge.com/Family-and-friends/Illy/illy.html
--OB -
iPhoto was working fine. Performed update for HP printer, which should have nothing to do with iPhoto. But the next time I tried to open iPhoto, got this message. "To open your library with this version of iPhote, it first needs to be prepared." When I g
What version of iPhoto? Assuming 09 or later...
Option 1
Back Up and try rebuild the library: hold down the command and option (or alt) keys while launching iPhoto. Use the resulting dialogue to rebuild. Choose to Repair Database. If that doesn't help, then try again, this time using Rebuild Database.
If that fails:
Option 2
Download iPhoto Library Manager and use its rebuild function. (In early versions of Library Manager it's the File -> Rebuild command. In later versions it's under the Library menu.)
This will create an entirely new library. It will then copy (or try to) your photos and all the associated metadata and versions to this new Library, and arrange it as close as it can to what you had in the damaged Library. It does this based on information it finds in the iPhoto sharing mechanism - but that means that things not shared won't be there, so no slideshows, books or calendars, for instance - but it should get all your events, albums and keywords, faces and places back.
Because this process creates an entirely new library and leaves your old one untouched, it is non-destructive, and if you're not happy with the results you can simply return to your old one.
Regards
TD -
Upgraded both computers in the household and found Lion is too disruptive to workflow.
Do I turn in the new laptop for a pre-Lion rebuild to keep Snow Leopard, or do I return new computer and get upgraded memory to improve performance of existing MacBookPro? I'm mostly still happy with existing MacBookPro, but Aperture doesn't work, the computer can't handle it.
Other possibility is setting up virtual machine with Snow Leopard server software on new computer.
Any opinions on what would allow moving forward with the least hassle and best workflow continuity?hi,
what year and specs does the MBP have -
Times ten to improve performance for search results in Oracle eBS
Hi ,
We have various search scenarios in our ERP implementaion using Oracle Apps eBS, for example searching for an item . Oracle apps does provide item search but performance is not great. We have about 30 million items and hence to improve the performance of the search thought Times ten may help.
Can anyone please clarify if Times ten can be used to improve performance on the eBS database , if yes how.Vikash,
We were thinking along the same lines (using TimesTen for massive item search in e-Business Suite). In our case massive Item / parametric search leveraging the Product Information Management application. We were thinking about setting up a POC on a Linux Server with a Vision Instance. We should compare notes?
SParker -
BIA to improve performance for BPS Applications
Hi All,
Is it possible to improve performance of BPS applications using BIA. Currently we are running applications on BI-BPS which because of huge range of period are having a performance issue.
Would request to please share whether in this read and write option of BPS would BIA be helpful and to what extent can the performance be increased?
Request an early reply as system is in really bad shape and users are grappling with poor performance?
Rgds,
RajeevHi Rajeev,
If the performance issue you are facing is while running the query on real-time (transactional) infocube being used in BPS, then BIA can help. The closed requests from real-time cube can be indexed in BIA. At the query runtime, analytic engine reads data from database for open request and from BIA for closed and indexed requests. It combines this data with the plan buffer cache and produce the result.
Hence if you are facing issue with query response time, BIA will defenitely help.
Regards,
Praveen -
To improve performance for report
Hi Expert,
i have generated the opensales order report which is fetching data from VBAK it is taking more time exectuing in the forground itself.
it is going in to dump in foreground and i have executed in the background also but it is going in to dump.
SELECT vbeln
auart
submi
vkorg
vtweg
spart
knumv
vdatu
vprgr
ihrez
bname
kunnr
FROM vbak
APPENDING TABLE itab_vbak_vbap
FOR ALL ENTRIES IN l_itab_temp
*BEGIN OF change 17/Oct/2008.
WHERE erdat IN s_erdat AND
submi = l_itab_temp-submi AND
*End of Changes 17/Oct/2008.
auart = l_itab_temp-auart AND
*BEGIN OF change 17/Oct/2008.
submi = l_itab_temp-submi AND
*End of Changes 17/Oct/2008.
vkorg = l_itab_temp-vkorg AND
vtweg = l_itab_temp-vtweg AND
spart = l_itab_temp-spart AND
vdatu = l_itab_temp-vdatu AND
vprgr = l_itab_temp-vprgr AND
ihrez = l_itab_temp-ihrez AND
bname = l_itab_temp-bname AND
kunnr = l_itab_temp-sap_kunnr.
DELETE itab_temp FROM l_v_from_rec TO l_v_to_rec.
ENDDO.
Please give me suggession for improving performance for the programmes.hi,
you try like this
DATA:BEGIN OF itab1 OCCURS 0,
vbeln LIKE vbak-vbeln,
END OF itab1.
DATA: BEGIN OF itab2 OCCURS 0,
vbeln LIKE vbap-vbeln,
posnr LIKE vbap-posnr,
matnr LIKE vbap-matnr,
END OF itab2.
DATA: BEGIN OF itab3 OCCURS 0,
vbeln TYPE vbeln_va,
posnr TYPE posnr_va,
matnr TYPE matnr,
END OF itab3.
SELECT-OPTIONS: s_vbeln FOR vbak-vbeln.
START-OF-SELECTION.
SELECT vbeln FROM vbak INTO TABLE itab1
WHERE vbeln IN s_vbeln.
IF itab1[] IS NOT INITIAL.
SELECT vbeln posnr matnr FROM vbap INTO TABLE itab2
FOR ALL ENTRIES IN itab1
WHERE vbeln = itab1-vbeln.
ENDIF.
Maybe you are looking for
-
TS2972 iTunes 10.6 and home sharing
I downloaded the latest version of iTunes (10.6) to the computer that holds my entire music library. Previously I was able stream my music over my iPad and use the remote application to control my computer. Now my homegroup is no longer being recogni
-
I need to replace the 30 pin connector on an ipod mobile speaker. Any suggestions where I might obtain one?
-
Hi Is creating substring of a characteristic value possible in BEx. I did check other posts but the answers weren't satisfactory. Please let me know the process to do the same. Apart from this, is it possible to identify the number of records in a cu
-
Reduce the size of photos in iPhoto
Okay, I just discovered that my wife's camera's been set to take pix at pretty much the highest resolution possible for a good while now, which would explain the dramatic decrease in storage space on my hard drive. So, I was wondering if there's any
-
Installation problem with the new iso after trying to install the LTS
I tried to install arch (i have always succeeded before) but i wanted to use the LTS kernel. When choosing packages i unchecked the linux package (which provides the 3 kernel) and checked the kernellts package. After i was done with the configuration