효율성이 std::vector::push_back
인 이 발견되었습니다. 관련 코드는 here입니다. 나는 그것을 자신을 시도하고 내가 illegal instruction (core dumped)
있어, GDB는 오류가 라인에서 발생 표시 (37)C++ 코드의 어셈블리 언어로 오류 프로파일 링
I가있는 컴퓨터에서, GCC 4.7.2을 사용하여 컴파일 :
$ sudo dmidecode -t processor
# dmidecode 2.11
SMBIOS 2.5 present.
Handle 0x0400, DMI type 4, 40 bytes
Processor Information
Socket Designation: CPU
Type: Central Processor
Family: Core 2 Duo
Manufacturer: Intel
ID: 7A 06 01 00 FF FB EB BF
Signature: Type 0, Family 6, Model 23, Stepping 10
Flags:
FPU (Floating-point unit on-chip)
VME (Virtual mode extension)
DE (Debugging extension)
PSE (Page size extension)
TSC (Time stamp counter)
MSR (Model specific registers)
PAE (Physical address extension)
MCE (Machine check exception)
CX8 (CMPXCHG8 instruction supported)
APIC (On-chip APIC hardware supported)
SEP (Fast system call)
MTRR (Memory type range registers)
PGE (Page global enable)
MCA (Machine check architecture)
CMOV (Conditional move instruction supported)
PAT (Page attribute table)
PSE-36 (36-bit page size extension)
CLFSH (CLFLUSH instruction supported)
DS (Debug store)
ACPI (ACPI supported)
MMX (MMX technology supported)
FXSR (FXSAVE and FXSTOR instructions supported)
SSE (Streaming SIMD extensions)
SSE2 (Streaming SIMD extensions 2)
SS (Self-snoop)
HTT (Multi-threading)
TM (Thermal monitor supported)
PBE (Pending break enabled)
Version: Not Specified
Voltage: 1.2 V
External Clock: 1333 MHz
Max Speed: 5200 MHz
Current Speed: 3000 MHz
Status: Populated, Enabled
Upgrade: Socket LGA775
L1 Cache Handle: 0x0700
L2 Cache Handle: 0x0701
L3 Cache Handle: Not Provided
Serial Number: Not Specified
Asset Tag: Not Specified
Part Number: Not Specified
Core Count: 2
Core Enabled: 2
Thread Count: 2
Characteristics:
64-bit capable
문제가 여기에 무엇입니까? 이 코드를 어떻게 작동시킬 수 있습니까? 나는 또한 icpc 13.1.0으로 시도했지만 이것 역시 실패했다.
편집 : 저는 우분투 12.10 64 비트를 사용하고 있습니다.
코어 i7에서 gcc 4.2로 잘 작동합니다 - 어떤 OS를 사용하고 있습니까? –
37 행의 오류가 오류가 정확하게 있음을 의미하지는 않습니다. 해체를보고 정확히 어떤 명령이 원인인지 확인해야합니다. –
@AlexeyFrunze 감사합니다. 어떻게 그렇게 할 수 있습니까? 또한'stopRDTSC'와 같이 모든 asm 호출을 포함하고 있기 때문에 오류가 'startRDTSC' 함수에보고되지 않는 것은 이상합니다. 그러나 먼저 호출되고 작동하는 것으로 보입니다. 내 전체 스택 트레이스는 다음과 같습니다 : testvector.cpp의 stopRDTSCP에서 0 : 37 testbector.cpp의 CPUBenchmark :: stop 중 55 : 2는 testvector.cpp의 메인에 있습니다 : 177' – mkm