Hei 커뮤니티,포인터 삭제 시간
포인터 삭제와 관련하여 작은 질문이 있습니다.
Dimension 1024x1024의 포인터 - 투 - 포인터 행렬로 작업하고 있습니다. 동적으로 생성하기 때문에 프로그램 끝에 할당 된 공간을 삭제합니다. 그러나 일반적인 루프에서이 작업을 수행하는 데는 상당한 시간이 걸리므로 프로세서의 클럭 속도를 사용하여 약 2 초를 측정했습니다. 그리고 프로그램이 단지 15 초 만에 실행될 때 2 초는 더 커집니다 : 더하기 : 할당 된 포인터를 사용하는 함수는 한 번 이상 호출됩니다 ....
time=clock();
for(i=0;i<xSize;i++){ //xSize is dynamic, but 1024 for the measurement
delete [] inDaten[i];
delete [] inDaten2[i];
delete [] copy[i];
}
delete inDaten; delete inDaten2; delete copy;
time=clock()-time;
time/=CLOCKS_PER_SEC;
는 항상 긴 포인터를 삭제되어
여기에 측정을 포함하여 코드의 측정 시간이 중요한 부분은 무엇입니까? 아니면 그냥 잘못하고있는 것입니까?
여기 누군가 나를 도와 줄 수 있기를 바랍니다. 더 복잡한 프로그램을 더 빠르게 실행하도록 최적화했기 때문에 2 초 분량의 코드를 사용할 수 없습니다. 그것은 다른 모든 부분에 비해 너무 느립니다. 하지만 여전히이 코드를 동적으로 구현할 수 있어야합니다. SmartPointers는 도움이 될 수 있지만, 정확하게 이해한다면, 그들은 또한 다른 시간에 - 스스로를 삭제할 시간이 필요합니다 ...
답해 주셔서 감사합니다!
Baradrist
편집 : 난 그냥 내가 릴리스 모드에서 컴파일하지 않았기 때문에이 삭제-계산을 측정하는 것은 매우 느린 것을 발견했다. 디버거가 작동하기 때문에, 나는 두통을 낳은 (끝내 비현실적인) 숫자를 측정했다. 최종 프로그램은 자동으로 최적화되므로 삭제에 더 이상 시간이 거의 들지 않습니다.
어쨌든 : 모든 유용한 답변 주셔서 감사합니다! 그들은 내게 많은 여분의 지식과 생각할 것들이있어 !!!!
'inDaten','inDaten2' 및'copy'에있는 객체의 유형은 무엇입니까? 그들은 단지 int 또는 그와 비슷한 것입니까, 아니면 진짜 객체입니까? –
모든 것을 동적으로 할당해야합니까? 이렇게 많은 * 별개의 할당이 필요합니까? 적은 수의 할당으로 데이터를 저장하도록 프로그램을 다시 작성할 수 있습니까? – jalf
내 netbook에서 double []을 삭제해도 다음 시계 틱으로 이동하지 않으므로 디버거가 연결되어 실행 중이거나 어레이의 요소 소멸자에서 비싼 작업이 진행 중입니다. –