Yang baru untuk C++ di Visual Studio 2017
Visual Studio 2017 menghadirkan banyak pembaruan dan perbaikan untuk lingkungan C++. Kami telah memperbaiki lebih dari 250 bug dan melaporkan masalah dalam pengompilasi dan alat. Banyak dari masalah ini dikirimkan oleh pelanggan melalui opsi Laporkan Masalah dan Berikan Saran di bagian Kirim Umpan Balik. Terima kasih telah melaporkan bug!
Untuk informasi selengkapnya mengenai apa yang baru di semua Visual Studio, kunjungi Yang baru di Visual Studio 2017. Untuk informasi yang baru untuk C++ di Visual Studio 2019, lihat Yang baru untuk C++ di Visual Studio 2019. Untuk informasi yang baru untuk C++ di Visual Studio 2015 dan versi yang lebih lama, lihat Visual C++ Yang Baru pada 2003 hingga 2015. Untuk informasi mengenai apa yang baru dalam dokumen C++, lihat Dokumen Microsoft C++: Yang baru.
Pengompilasi Visual Studio C++ 2017
Peningkatan kesesuaian C++
Kami telah memperbarui pengompilasi C++ dan pustaka standar dalam rilis ini dengan dukungan yang ditingkatkan untuk fitur C++11 dan C++14. Ini juga termasuk dukungan awal untuk fitur tertentu yang diharapkan ada dalam standar C++17. Untuk informasi terperinci, lihat Penyempurnaan Kesesuaian C++ di Visual Studio 2017.
Visual Studio 2017 versi 15.5
Pengompilasi mendukung sekitar 75% fitur yang baru di C++17, termasuk pengikatan terstruktur, constexpr
lambda, if constexpr
, variabel sebaris, ekspresi lipatan, dan penambahan noexcept
ke sistem jenis. Fitur-fitur ini tersedia di bagian opsi /std:c++17
. Untuk informasi selengkapnya, lihat Penyempurnaan Kesesuaian C++ di Visual Studio 2017
Visual Studio 2017 versi 15.7
Toolset pengompilasi MSVC di Visual Studio versi 15.7 sekarang sesuai dengan Standar C++. Untuk informasi selengkapnya, lihat Mengumumkan: Kesesuaian MSVC dengan kesesuaian bahasa Standar C++ dan Microsoft C/C++.
Visual Studio 2017 versi 15.8
Switch pengompilasi /experimental:preprocessor
memungkinkan praprosesor MSVC eksperimental baru yang akhirnya akan sesuai dengan semua standar C dan C++ yang berlaku. Untuk informasi selengkapnya, lihat Gambaran umum praprosesor baru MSVC.
Opsi pengompilasi baru
/permissive-
: Aktifkan semua opsi pengompilasi kesesuaian standar yang ketat dan nonaktifkan sebagian besar ekstensi pengompilasi khusus Microsoft (tetapi tidak__declspec(dllimport)
, misalnya). Opsi ini aktif secara default di Visual Studio 2017 versi 15.5. Mode kesesuaian/permissive-
mencakup dukungan untuk pencarian nama dua fase. Untuk informasi selengkapnya, lihat Peningkatan Kesesuaian C++ di Visual Studio./diagnostics
: Mengaktifkan tampilan kesalahan diagnostik atau lokasi peringatan dengan tiga cara berbeda: hanya nomor baris, nomor baris dan kolom, atau nomor baris dan kolom, dengan tanda sisipan di bawah baris kode yang salah./debug:fastlink
: Aktifkan hingga 30% waktu tautan bertambah bertahap yang lebih cepat (vs. Visual Studio 2015) dengan tidak menyalin semua informasi debug ke dalam file PDB. File PDB sebagai gantinya menunjuk ke informasi debug untuk file objek dan pustaka yang digunakan untuk membuat file yang dapat dieksekusi. Lihat Siklus build C++ yang lebih cepat di VS "15" dengan/Debug:fastlink
dan Rekomendasi untuk mempercepat build C++ di Visual Studio.Visual Studio 2017 memungkinkan penggunaan
/sdl
dengan/await
. Kami menghapus batasan/RTC
dengan Coroutine.
Visual Studio 2017 versi 15.3
/std:c++14
dan/std:c++latest
: Opsi pengompilasi ini memungkinkan Anda untuk mengaktifkan versi tertentu dari bahasa pemrograman ISO C++ dalam proyek. Sebagian besar fitur standar draf baru dilindungi oleh opsi/std:c++latest
./std:c++17
memungkinkan serangkaian fitur C++17 yang diimplementasikan oleh pengompilasi. Opsi ini menonaktifkan dukungan pustaka standar dan pengompilasi untuk fitur setelah C++17: yang diubah atau baru di versi Draf Kerja yang lebih baru, dan pembaruan cacat dari Standar C++. Untuk mengaktifkan fitur-fitur tersebut, gunakan/std:c++latest
.
Codegen, keamanan, diagnostik, dan penerapan versi
Rilis ini menghadirkan beberapa peningkatan dalam optimalisasi, pembuatan kode, penerapan versi toolset, dan diagnostik. Beberapa peningkatan penting meliputi:
- Peningkatan pembuatan kode perulangan: Dukungan untuk vektorisasi otomatis pembagian bilangan bulat konstan, identifikasi pola memset yang lebih baik.
- Keamanan kode yang ditingkatkan: Peningkatan emisi diagnostik pengompilasi overrun buffer, dan
/guard:cf
sekarang melindungi pernyataan switch yang menghasilkan tabel lompat. - Penerapan versi: Nilai makro praprosesor bawaan _MSC_VER sekarang sedang diperbarui secara monoton di setiap pembaruan toolset Visual C++. Untuk informasi selengkapnya, lihat Versi Pengompilasi Visual C++.
- Tata letak toolset baru: Alat pengompilasi dan build terkait memiliki lokasi dan struktur direktori baru pada mesin pengembangan Anda. Tata letak baru memungkinkan penginstalan berdampingan dari beberapa versi pengompilasi. Untuk informasi selengkapnya, lihat Tata Letak Alat Pengompilasi di Visual Studio 2017.
- Diagnostik yang ditingkatkan: Jendela output sekarang menunjukkan kolom tempat kesalahan terjadi. Untuk informasi selengkapnya, lihat Peningkatan diagnostik pengompilasi C++ di Pratinjau Vs "15" 5.
- Saat menggunakan koroutine, hasil kata kunci eksperimental (tersedia di bawah
/await
opsi) dihapus. Kode Anda harus diperbarui untuk menggunakanco_yield
sebagai gantinya. Untuk informasi selengkapnya, lihat kata kunciyield
untuk menjadico_yield
di VS 2017.
Visual Studio 2017 versi 15.3
Peningkatan diagnostik dalam pengkompilasi. Untuk informasi selengkapnya, lihat Peningkatan Diagnostik di Visual Studio 2017 15.3.0.
Visual Studio 2017 versi 15.5
Performa runtime Visual C++ terus meningkat melalui kualitas kode yang dihasilkan dengan lebih baik. Sekarang Anda hanya dapat mengompilasi ulang kode Anda, dan aplikasi Anda berjalan lebih cepat. Beberapa optimalisasi pengompilasi baru, seperti vektorisasi penyimpanan skalar kondisional, menggabungkan panggilan sin(x)
dan cos(x)
ke sincos(x)
baru, serta penghapusan instruksi redundan dari pengoptimal SSA. Optimalisasi pengompilasi lainnya adalah peningkatan fungsionalitas yang ada, seperti: heuristik vektorizer untuk ekspresi kondisional, optimalisasi perulangan yang lebih baik, dan codegen float min/maks. Penaut memiliki implementasi /OPT:ICF
baru dan lebih cepat, yang dapat menghasilkan kecepatan waktu tautan hingga 9%, dan ada perbaikan perf lainnya dalam penautan bertahap. Untuk informasi selengkapnya, lihat /OPT (Optimasi) dan /INCREMENTAL (Tautan Bertahap).
Pengompilasi Microsoft C++ mendukung AVX-512 Intel. Pengompilasi ini memiliki instruksi Panjang Vektor yang membawa fungsi baru di AVX-512 ke register lebar 128-bit dan 256-bit.
Opsi /Zc:noexceptTypes-
dapat digunakan untuk kembali ke versi C++14 noexcept
saat menggunakan mode C++17 secara umum. Opsi ini memungkinkan Anda memperbarui kode sumber agar sesuai dengan C++17 tanpa harus menulis ulang semua kode throw()
Anda secara bersamaan. Untuk informasi selengkapnya, lihat Penghapusan spesifikasi pengecualian dinamis dan noexcept.
Visual Studio 2017 versi 15.7
- Switch pengompilasi baru /Qspectre untuk membantu mengurangi serangan saluran sisi eksekusi spekulatif. Untuk informasi selengkapnya, lihat Mitigasi Spectre di MSVC.
- Peringatan diagnostik baru untuk mitigasi Spectre. Untuk informasi selengkapnya, lihat Diagnostik Spectre di Pratinjau Visual Studio 2017 Versi 15.7 4.
- Nilai baru untuk /Zc,
/Zc:__cplusplus
, memungkinkan pelaporan dukungan standar C++ yang benar. Misalnya, ketika switch diatur dan pengompilasi dalam mode/std:c++17
dengan nilai yang diperluas ke201703L
. Untuk informasi selengkapnya, lihat MSVC sekarang melaporkan __cplusplus dengan benar.
Pustaka standar C++
Peningkatan Kebenaran
Visual Studio RTM 2017 (versi 15.0)
- Peningkatan diagnostik kecil
basic_string
_ITERATOR_DEBUG_LEVEL != 0
. Ketika pemeriksaan IDL tersandung dalam mesin string, sekarang ia melaporkan perilaku spesifik yang menyebabkan perjalanan. Misalnya, alih-alih "iterator string tidak dapat didereferensikan" Anda mendapatkan "tidak dapat membatalkan dereferensi string iterator karena berada di luar rentang (misalnya iterator akhir)". - Memperbaiki operator penetapan pemindahan
std::promise
, yang sebelumnya dapat menyebabkan kode diblokir selamanya. - Memperbaiki kesalahan pengompilasi dengan konversi implisit
atomic<T*>
keT*
. pointer_traits<Ptr>
sekarang mendeteksiPtr::rebind<U>
dengan benar.- Memperbaiki pengualifikasi
const
yang hilang di operator penguranganmove_iterator
. - Memperbaiki codegen buruk senyap untuk alokator stateful yang ditentukan pengguna yang meminta
propagate_on_container_copy_assignment
danpropagate_on_container_move_assignment
. atomic<T>
sekarang mentolerir kelebihan bebanoperator&()
.- Diagnostik pengompilasi yang sedikit ditingkatkan untuk kesalahan panggilan
bind()
.
Ada lebih banyak peningkatan pustaka standar di Visual Studio 2017 RTM. Untuk daftar lengkapnya, lihat entri Blog Tim C++ Perbaikan Pustaka Standar Di VS 2017 RTM.
Visual Studio 2017 versi 15.3
- Kontainer pustaka standar sekarang mengaitkan
max_size()
kenumeric_limits<difference_type>::max()
daripadamax()
darisize_type
. Perubahan ini memastikan bahwa hasildistance()
pada iterator dari kontainer tersebut dapat direpresentasikan dalam jenis pengembaliandistance()
. - Memperbaiki spesialisasi
auto_ptr<void>
yang hilang. - Algoritma
for_each_n()
,generate_n()
, dansearch_n()
sebelumnya gagal dikompilasi jika argumen panjang bukan jenis integral. Mereka sekarang mencoba untuk mengonversi panjang nonintegral ke iterator'difference_type
. normal_distribution<float>
tidak lagi memancarkan peringatan di dalam pustaka standar tentang mempersempit dari ganda ke float.- Memperbaiki beberapa operasi
basic_string
yang menggunakannpos
alih-alihmax_size()
saat memeriksa luapan ukuran maksimum. condition_variable::wait_for(lock, relative_time, predicate)
akan menunggu seluruh waktu relatif jika ada pengaktifan palsu. Sekarang hanya menunggu interval tunggal dari waktu relatif.future::get()
sekarang membatalkanfuture
, sesuai kebutuhan standar.iterator_traits<void *>
dulu merupakan kesalahan yang sulit karena mencoba membentukvoid&
; sekarang dengan bersih menjadi struktur kosong untuk memungkinkan penggunaaniterator_traits
dalam kondisi SFINAE "is iterator".- Beberapa peringatan yang dilaporkan oleh Clang
-Wsystem-headers
diperbaiki. - Juga memperbaiki "spesifikasi pengecualian dalam deklarasi tidak cocok dengan deklarasi sebelumnya" yang dilaporkan oleh Clang
-Wmicrosoft-exception-spec
. - Juga memperbaiki peringatan pengurutan mem-initializer-list yang dilaporkan oleh Clang dan C1XX.
- Kontainer yang tidak diurutkan tidak menukar fungsi hash atau predikat mereka ketika kontainer itu sendiri ditukar. Sekarang dilakukan.
- Banyak operasi pertukaran kontainer sekarang ditandai
noexcept
(karena pustaka standar kami tidak pernah berniat untuk melemparkan pengecualian saat mendeteksi kondisi perilaku tidak terdefinisi non-propagate_on_container_swap
nonalokator yang tidak sama). - Banyak operasi
vector<bool>
sekarang ditandainoexcept
. - Pustaka standar sekarang memberlakukan alokator
value_type
yang cocok (dalam mode C++17) dengan penetasan escape opt-out. - Memperbaiki beberapa kondisi di mana sisipan rentang mandiri pada
basic_string
akan mengacak konten string. (Catatan: penyisipan rentang mandiri ke vektor masih dilarang oleh Standar.) basic_string::shrink_to_fit()
tidak lagi terpengaruh olehpropagate_on_container_swap
alokator.std::decay
sekarang menangani jenis fungsi yang dapat diubah, yaitu, jenis fungsi yang memenuhi syarat cv, memenuhi syarat ref, atau keduanya.- Perubahan termasuk arahan untuk menggunakan sensitivitas huruf besar/kecil yang benar dan garis miring ke depan, meningkatkan portabilitas.
- Memperbaiki peringatan C4061 "enumerator 'enumerator' dalam sakelar enum 'enumerasi' tidak ditangani secara eksplisit oleh label kasus." Peringatan ini off-by-default dan diperbaiki sebagai pengecualian untuk kebijakan umum pustaka standar untuk peringatan. (Pustaka standar
/W4
bersih, tetapi tidak mencoba untuk/Wall
bersih. Banyak peringatan nonaktif secara default yang luar biasa mengganggu, dan tidak dimaksudkan untuk digunakan secara teratur.) - Peningkatan pemeriksaan debug
std::list
. Iterator daftar sekarang memeriksaoperator->()
, danlist::unique()
sekarang menandai iterator sebagai tidak valid. - Perbaikan metaprogram alokator penggunaan di
tuple
.
Visual Studio 2017 versi 15.5
std::partition
sekarang memanggil predikatN
kali alih-alihN + 1
kali, seperti yang diperlukan standar.- Upaya untuk menghindari statis ajaib di versi 15.3 diperbaiki dalam versi 15.5.
std::atomic<T>
tidak lagi perluT
untuk dapat dibangun secara default.- Algoritma tumpukan yang mengambil waktu logaritma bertingkah berbeda ketika debugging iterator diaktifkan. Algoritma ini tidak lagi melakukan pernyataan waktu linier bahwa input sebenarnya adalah tumpukan.
__declspec(allocator)
sekarang dilindungi hanya untuk C1XX, untuk mencegah peringatan dari Clang, yang tidak memahami declspec ini.basic_string::npos
sekarang tersedia sebagai konstanta waktu kompilasi.std::allocator
dalam mode C++17 sekarang menangani alokasi jenis yang terlalu sejajar dengan benar, yaitu jenis yang penyelarasannya lebih besar darimax_align_t
, kecuali dinonaktifkan oleh/Zc:alignedNew-
. Misalnya, vektor objek dengan penyelarasan 16-byte atau 32-byte sekarang diselaraskan dengan benar untuk instruksi SSE dan AVX.
Peningkatan kesesuaian
- Kami menambahkan <any>, <string_view>,
apply()
,make_from_tuple()
. - Menambahkan <optional>, <variant>,
shared_ptr::weak_type
, dan <cstdalign>. - Mengaktifkan C++14
constexpr
dimin(initializer_list)
,max(initializer_list)
, danminmax(initializer_list)
, danmin_element()
,max_element()
, sertaminmax_element()
.
Untuk informasi selengkapnya, lihat Kesesuaian bahasa Microsoft C/C++.
Visual Studio 2017 versi 15.3
- Beberapa fitur C++17 lainnya telah diimplementasikan. Untuk informasi selengkapnya, lihat Tabel kesesuaian bahasa Microsoft C/C++.
- Mengimplementasikan P0602R0 "varian dan opsional harus menyebarkan salinan/pemindahan sepele".
- Pustaka standar sekarang secara resmi mentolerir RTTI dinamis yang dinonaktifkan melalui opsi /GR-. Baik
dynamic_pointer_cast()
danrethrow_if_nested()
secara inheren memerlukandynamic_cast
, sehingga pustaka standar sekarang menandainya sebagai=delete
di bawah/GR-
. - Bahkan ketika RTTI dinamis dinonaktifkan melalui
/GR-
, "RTTI statis" dalam bentuktypeid(SomeType)
masih tersedia, dan mendukung beberapa komponen pustaka standar. Pustaka standar sekarang mendukung penonaktifan fitur ini juga, melalui/D_HAS_STATIC_RTTI=0
. Bendera ini juga menonaktifkanstd::any
, fungsi anggotatarget()
dantarget_type()
daristd::function
, serta fungsi anggota temanget_deleter()
daristd::shared_ptr
danstd::weak_ptr
. - Pustaka standar sekarang menggunakan C++14
constexpr
tanpa syarat, alih-alih makro yang ditentukan secara kondisional. - Pustaka standar sekarang menggunakan templat alias secara internal.
- Pustaka standar sekarang menggunakan
nullptr
secara internal, bukannullptr_t{}
. (Penggunaan internal NULL diberantas. Penggunaan internal 0-as-null sedang dibersihkan secara bertahap.) - Pustaka standar sekarang menggunakan
std::move()
secara internal, alih-alih menyalahgunakan gayastd::forward()
. - Mengubah
static_assert(false, "message")
menjadi#error message
. Perubahan ini meningkatkan diagnostik pengompilasi karena#error
segera menghentikan kompilasi. - Pustaka standar tidak lagi menandai fungsi sebagai
__declspec(dllimport)
. Teknologi penaut modern tidak lagi memerlukannya. - Mengekstrak SFINAE ke argumen templat default, yang mengurangi kekacauan dibandingkan dengan jenis pengembalian dan jenis argumen fungsi.
- Pemeriksaan debug <secara acak> sekarang menggunakan mesin pustaka standar yang biasa, alih-alih fungsi internal
_Rng_abort()
, yang memanggilfputs()
kestderr
. Implementasi fungsi ini disimpan untuk kompatibilitas biner. Kami akan menghapusnya di versi pustaka standar yang tidak kompatibel dengan biner berikutnya.
Visual Studio 2017 versi 15.5
- Beberapa fitur pustaka standar telah ditambahkan, tidak digunakan lagi, atau dihapus sesuai standar C++17. Untuk informasi selengkapnya, lihat Peningkatan kesesuaian C++ di Visual Studio.
- Dukungan eksperimental untuk algoritma paralel berikut:
all_of
any_of
for_each
for_each_n
none_of
reduce
replace
replace_if
sort
- Tanda tangan untuk algoritma paralel berikut ditambahkan tetapi tidak diparalelkan saat ini. Pembuatan profil tidak menunjukkan manfaat dalam paralelisasi algoritma yang hanya memindahkan atau memutus elemen:
copy
copy_n
fill
fill_n
move
reverse
reverse_copy
rotate
rotate_copy
swap_ranges
Visual Studio 2017 versi 15.6
<memory_resource>
- Dasar-Dasar Pustaka V1
- Menghapus penetapan
polymorphic_allocator
- Meningkatkan pengurangan argumen templat kelas
Visual Studio 2017 versi 15.7
- Dukungan untuk algoritma paralel tidak lagi bersifat eksperimental
- Implementasi baru
<filesystem>
- Konversi string dasar (parsial)
std::launder()
std::byte
hypot(x,y,z)
- Menghindari kerusakan yang tidak perlu
- Fungsi khusus matematika
constexpr char_traits
- Panduan pengurangan untuk pustaka standar
Untuk informasi selengkapnya, lihat Kesesuaian bahasa Microsoft C/C++.
Perbaikan performa dan throughput
- Memngkinkan kelebihan beban
basic_string::find(char)
hanya memanggiltraits::find
sekali. Sebelumnya, ini diimplementasikan sebagai pencarian string umum untuk string panjang 1. basic_string::operator==
sekarang memeriksa ukuran string sebelum membandingkan konten string.- Menghapus kopling kontrol di
basic_string
, yang sulit dianalisis oleh pengoptimal pengompilasi. Untuk semua string pendek, panggilanreserve
masih memiliki biaya bukan nol untuk tidak melakukan apa-apa. std::vector
dirombongkan untuk kebenaran dan performa: aliasing selama operasi penyisipan dan penempatan sekarang ditangani dengan benar seperti yang diperlukan oleh Standar, jaminan pengecualian yang kuat sekarang disediakan ketika diperlukan oleh Standar melaluimove_if_noexcept()
dan logika lainnya, dan menyisipkan dan emplace melakukan lebih sedikit operasi elemen.- Pustaka standar C++ sekarang menghindari dereferensi pointer null fancy.
- Peningkatan performa
weak_ptr::lock()
. - Untuk meningkatkan throughput pengompilasi, header pustaka standar C++ sekarang menghindari termasuk deklarasi untuk intrinsik pengompilasi yang tidak perlu.
- Peningkatan performa
std::string
danstd::wstring
memindahkan konstruktor lebih dari tiga kali.
Visual Studio 2017 versi 15.3
- Bekerja di sekitar interaksi dengan
noexcept
, yang mencegah penyejajaran implementasistd::atomic
ke dalam fungsi yang menggunakan Structured Exception Handling (SEH). - Mengubah fungsi internal
_Deallocate()
pustaka standar untuk dioptimalkan menjadi kode yang lebih kecil, memungkinkannya untuk disejajarkan ke lebih banyak tempat. - Mengubah
std::try_lock()
untuk menggunakan perluasan paket alih-alih pengulangan. - Meningkatkan
std::lock()
algoritma penghindaran kebuntuan untuk menggunakan operasilock()
alih-alih memutartry_lock()
pada semua kunci. - Mengaktifkan Optimalisasi Nilai Pengembalian Bernama di
system_category::message()
. conjunction
dandisjunction
sekarang membuat instans jenisN + 1
, bukan jenis2N + 2
.std::function
tidak lagi membuat instans mesin dukungan alokator untuk setiap jenis yang dapat dipanggil, meningkatkan throughput dan mengurangi ukuran .obj dalam program yang meneruskan banyak lambda yang berbeda kestd::function
.allocator_traits<std::allocator>
berisi operasistd::allocator
yang disisipkan secara manual, mengurangi ukuran kode dalam kode yang hanya berinteraksi denganstd::allocator
hinggaallocator_traits
(yaitu, di sebagian besar kode).- Antarmuka alokator minimal C++11 sekarang ditangani oleh panggilan pustaka standar
allocator_traits
secara langsung, alih-alih membungkus alokator di kelas internal_Wrap_alloc
. Perubahan ini mengurangi ukuran kode yang dihasilkan untuk dukungan alokator, meningkatkan kemampuan pengoptimal untuk alasan tentang kontainer pustaka standar dalam beberapa kasus, dan memberikan pengalaman debugging yang lebih baik (seperti sekarang Anda melihat jenis alokator Anda, dibandingkan_Wrap_alloc<your_allocator_type>
di debugger). - Pemrograman meta yang dihapus untuk
allocator::reference
yang disesuaikan, yang alokatornya tidak diizinkan untuk disesuaikan. (Alokator dapat membuat kontainer menggunakan pointer fancy tetapi bukan referensi fancy.) - Front end pengompilasi diajarkan untuk membuka iterator debug dalam basis rentang untuk perulangan, meningkatkan performa build debug.
- Jalur penyusutan internal
basic_string
untukshrink_to_fit()
danreserve()
tidak lagi berada di jalur operasi realokasi, mengurangi ukuran kode untuk semua anggota yang bermutasi. - Jalur pertumbuhan internal
basic_string
tidak lagi berada di jalurshrink_to_fit()
. - Operasi
basic_string
yang bermutasi sekarang diperhitungkan ke jalur cepat yang tidak dialokasikan dan mengalokasikan fungsi jalur lambat, sehingga lebih mungkin untuk kasus tanpa realokasi umum untuk disandingkan ke pemanggil. - Operasi yang bermutasi
basic_string
sekarang membangun buffer yang direalokasikan dalam keadaan pilihan daripada mengubah ukuran di tempat. Misalnya, sisipan di awal string sekarang memindahkan konten setelah penyisipan tepat sekali. Ini dipindahkan ke bawah atau ke buffer yang baru dialokasikan. Ini tidak lagi dipindahkan dua kali dalam kasus realokasi, pertama ke buffer yang baru dialokasikan dan kemudian turun. - Operasi yang memanggil pustaka standar C dalam <string> sekarang meng-cache alamat
errno
untuk menghapus interaksi berulang dengan TLS. - Menyederhanakan implementasi
is_pointer
. - Selesai mengubah SFINAE Ekspresi berbasis fungsi ke berbasis
struct
danvoid_t
. - Algoritma pustaka standar sekarang menghindari iterator pascainkrementasi.
- Memperbaiki peringatan pemotongan saat menggunakan alokator 32-bit pada sistem 64-bit.
- Penetapan pemindahan
std::vector
sekarang lebih efisien dalam kasus non-equal-allocator non-POCMA, dengan menggunakan kembali buffer jika memungkinkan.
Visual Studio 2017 versi 15.5
basic_string<char16_t>
sekarang melibatkanmemcmp
,memcpy
, yang sama, dan optimalisasi serupa yang dilakukanbasic_string<wchar_t>
.- Batasan pengoptimal yang mencegah pointer fungsi disejajarkan, diekspos oleh pekerjaan "hindari fungsi penyalinan" kami di Visual Studio 2015 Pembaruan 3, telah diatasi, memulihkan performa
lower_bound(iter, iter, function pointer)
. - Overhead verifikasi perintah debugging iterator untuk input
includes
,set_difference
,set_symmetric_difference
, danset_union
dikurangi dengan membuka iterator sebelum memeriksa perintah. std::inplace_merge
sekarang melompati elemen yang sudah berada di posisi.- Penyusunan
std::random_device
tidak lagi menyusun kemudian menghancurkanstd::string
. std::equal
danstd::partition
memiliki pass pengoptimalan jump-threading yang menyimpan perbandingan iterator.- Ketika
std::reverse
diteruskan pointer untuk disalinT
secara sepele, sekarang dikirim ke implementasi vektorisasi tulisan tangan. std::fill
,std::equal
, danstd::lexicographical_compare
diajarkan cara mengirimkan kememset
danmemcmp
untukstd::byte
dangsl::byte
(serta enum dan kelas enum seperti karakter lainnya). Karenastd::copy
dikirim menggunakanis_trivially_copyable
, tidak memerlukan perubahan apa pun.- Pustaka standar tidak lagi berisi destruktor kurung kurawal kosong yang satu-satunya perilakunya adalah membuat jenis tidak dapat dihancurkan secara sepele.
Pustaka lainnya
Dukungan pustaka sumber terbuka
Vcpkg adalah alat baris perintah sumber terbuka yang sangat menyederhanakan proses memperoleh dan membangun pustaka statis C++ sumber terbuka dan DLLS di Visual Studio. Untuk informasi selengkapnya, lihat vcpkg.
CPPRest SDK 2.9.0
Visual Studio 2017 versi 15.5
CPPRestSDK, API web lintas platform untuk C++, diperbarui ke versi 2.9.0. Untuk informasi selengkapnya, lihat CppRestSDK 2.9.0 tersedia di GitHub.
ATL
Visual Studio 2017 versi 15.5
- Set lain dari perbaikan kesesuaian pencarian nama
- Konstruktor pemindahan yang ada dan operator penetapan pemindahan sekarang ditandai dengan benar sebagai nonthrowing
- Membatalkan penekanan peringatan valid C4640 tentang init aman utas statis lokal di atlstr.h
- Inisialisasi statis lokal yang aman utas secara otomatis dimatikan di toolset XP saat menggunakan ATL untuk membangun DLL. Sekarang tidak. Anda dapat menambahkan
/Zc:threadSafeInit-
di pengaturan Proyek jika Anda tidak ingin inisialisasi thread-safe.
Runtime Visual C++
- Header baru "cfguard.h" untuk simbol Control Flow Guard.
Visual Studio 2017 C++ IDE
- Performa perubahan konfigurasi sekarang lebih baik untuk proyek asli C++ dan jauh lebih baik untuk proyek C++/CLI. Ketika konfigurasi solusi diaktifkan untuk pertama kalinya, itu lebih cepat, dan semua aktivasi selanjutnya dari konfigurasi solusi ini hampir seketika.
Visual Studio 2017 versi 15.3
- Beberapa wizard proyek dan kode telah ditulis ulang dalam gaya dialog tanda tangan.
- Tambahkan Kelas sekarang meluncurkan wizard Tambahkan Kelas secara langsung. Semua item lain yang sebelumnya ada di sini sekarang tersedia di bawah Tambahkan > Item Baru.
- Proyek Win32 sekarang berada di bawah kategori Windows Desktop dalam dialog Project Baru.
- Templat Konsol Windows dan Aplikasi Desktop sekarang membuat proyek tanpa menampilkan wizard. Ada Wizard Desktop Windows baru di bawah kategori yang sama yang menampilkan opsi yang sama dengan wizard Aplikasi Konsol Win32 lama.
Visual Studio 2017 versi 15.5
Beberapa operasi C++ yang menggunakan mesin IntelliSense untuk refaktor dan navigasi kode berjalan jauh lebih cepat. Angka-angka berikut didasarkan pada solusi Visual Studio Chromium dengan 3500 proyek:
Fitur | Peningkatan Performa |
---|---|
Ubah nama | 5,3x |
Mengubah Tanda Tangan | 4,5x |
Temukan Semua Referensi | 4,7x |
C++ sekarang mendukung Ctrl+Klik Buka Definisi, memudahkan navigasi mouse ke definisi. Structure Visualizer dari paket Productivity Power Tools sekarang juga disertakan dalam produk secara default.
IntelliSense
Mesin database berbasis SQLite baru sekarang digunakan secara default. Mesin baru mempercepat operasi database seperti Buka Definisi dan Temukan Semua Referensi. Hal ini meningkatkan waktu penguraian solusi awal secara signifikan. Pengaturan dipindahkan ke > Alat Opsi > Editor > Teks C/C++ > Tingkat Lanjut. (Sebelumnya di bagian ... C/C++ > Eksperimental.)
Kami telah meningkatkan performa IntelliSense pada proyek dan file yang tidak menggunakan header yang telah dikommpilasikan sebelumnya - Header Otomatis yang Telah Dikommpilasikan dibuat untuk header dalam file saat ini.
Kami telah menambahkan pemfilteran kesalahan dan bantuan untuk kesalahan IntelliSense dalam daftar kesalahan. Mengeklik kolom kesalahan sekarang memungkinkan pemfilteran. Selain itu, mengklik kesalahan tertentu atau menekan F1 meluncurkan pencarian online untuk pesan kesalahan.
Menambahkan kemampuan untuk memfilter item Daftar Anggota menurut jenis.
Menambahkan fitur IntelliSense Prediktif eksperimental baru yang menyediakan pemfilteran sadar kontekstual tentang apa yang muncul di Daftar Anggota. Untuk informasi selengkapnya, lihat C++ IntelliSense Improvements - Predictive IntelliSense & Filtering.
Temukan Semua Referensi (Shift+F12) sekarang membantu Anda mengeksplor dengan mudah, bahkan dalam basis kode yang kompleks. Fungsi ini menyediakan pengelompokan tingkat lanjut, pemfilteran, pengurutan, pencarian dalam hasil, dan (untuk beberapa bahasa) pewarnaan, sehingga Anda bisa mendapatkan pemahaman yang jelas tentang referensi Anda. Untuk C++, UI baru meliputi informasi tentang apakah kita membaca dari atau menulis ke variabel.
Fitur IntelliSense Dot-to-Arrow dipindahkan dari eksperimental ke tingkat lanjut, dan sekarang diaktifkan secara default. Editor ini menampilkan Perluas Cakupan dan Perluas Prioritas yang dipindahkan dari eksperimental ke tingkat lanjut.
Fitur refaktor eksperimental Ubah Tanda Tangan dan Fungsi Ekstrak sekarang tersedia secara default.
Menambahkan fitur eksperimental 'Beban proyek yang lebih cepat' untuk proyek C++. Pada waktu berikutnya dibuka, proyek C++ akan dimuat lebih cepat, dan setelahnya akan dimuat jauh lebih cepat!
Beberapa fitur ini umum untuk bahasa lain, dan beberapa khusus untuk C++. Untuk informasi selengkapnya tentang fitur baru ini, lihat Mengumumkan Pratinjau Visual Studio "15" 5.
Visual Studio 2017 versi 15.7
- Dukungan ditambahkan untuk ClangFormat. Untuk informasi selengkapnya, lihat Dukungan ClangFormat di Visual Studio 2017.
Proyek Non-MSBuild dengan Open Folder
Visual Studio 2017 memperkenalkan fitur Open Folder. Fitur ini memungkinkan Anda mengkode, membangun, dan men-debug dalam folder yang berisi kode sumber tanpa perlu membuat solusi atau proyek apa pun. Sekarang lebih mudah untuk mulai menggunakan Visual Studio, bahkan jika proyek Anda bukan proyek berbasis MSBuild. Open Folder memberi Anda akses ke kemampuan pemahaman, pengeditan, pembuatan, dan debugging kode yang canggih. Fitur ini sama dengan yang sudah disediakan Visual Studio untuk proyek MSBuild. Untuk informasi selengkapnya, lihat proyek Buka Folder untuk C++.
- Peningkatan pengalaman Open Folder. Anda dapat menyesuaikan pengalaman melalui file .json ini:
- CppProperties.json untuk menyesuaikan pengalaman IntelliSense dan penelusuran.
- Tasks.json untuk menyesuaikan langkah-langkah pembuatan.
- Launch.json untuk menyesuaikan pengalaman debugging.
Visual Studio 2017 versi 15.3
- Peningkatan dukungan untuk pengompilasi alternatif dan membangun lingkungan seperti MinGW dan Cygwin. Untuk informasi selengkapnya, lihat Menggunakan MinGW dan Cygwin dengan Visual C++ dan Open Folder.
- Menambahkan dukungan untuk menentukan variabel lingkungan global dan khusus konfigurasi di CppProperties.json dan CMakeSettings.json. Variabel lingkungan ini dapat digunakan oleh konfigurasi debug yang ditentukan dalam launch.vs.json dan tugas di tasks.vs.json. Untuk informasi selengkapnya, lihat Menyesuaikan Lingkungan Anda dengan Visual C++ dan Open Folder.
- Peningkatan dukungan untuk generator Ninja CMake, termasuk kemampuan untuk menargetkan platform 64-bit dengan mudah.
Dukungan CMake melalui Open Folder
Visual Studio 2017 memperkenalkan dukungan untuk menggunakan proyek CMake tanpa mengonversi ke file proyek MSBuild (.vcxproj). Untuk informasi selengkapnya, lihat Proyek CMake di Visual Studio. Membuka proyek CMake dengan Open Folder otomatis mengonfigurasi lingkungan untuk pengeditan, pembuatan, dan debugging C++.
C++ IntelliSense berfungsi tanpa perlu membuat file CppProperties.json di folder root. Kami menambahkan dropdown baru untuk memungkinkan pengguna beralih dengan mudah antara konfigurasi yang disediakan oleh file CMake dan CppProperties.json.
Konfigurasi lebih lanjut didukung melalui file CMakeSettings.json yang berada di folder yang sama dengan file CMakeLists.txt.
Visual Studio 2017 versi 15.3
- Dukungan ditambahkan untuk generator Ninja CMake.
Visual Studio 2017 versi 15.4
- Dukungan ditambahkan untuk mengimpor cache CMake yang ada.
Visual Studio 2017 versi 15.5
- Dukungan ditambahkan untuk CMake 3.11, analisis kode dalam proyek CMake, tampilan Target di Penjelajah Solusi, opsi untuk pembuatan cache, dan kompilasi file tunggal. Untuk informasi umum, lihat Dukungan CMake di Visual Studio dan Proyek CMake di Visual Studio.
Pengembangan Windows desktop
Kami sekarang memberikan pengalaman penginstalan yang lebih terperinci untuk menginstal beban kerja C++ asli. Kami menambahkan komponen yang dapat dipilih yang memungkinkan Anda menginstal hanya alat yang Anda butuhkan. Ukuran penginstalan yang ditunjukkan untuk komponen yang tercantum dalam UI penginstal salah, dan meremehkan ukuran total.
Agar berhasil membuat proyek Win32 di beban kerja desktop C++, Anda harus menginstal toolset dan Windows SDK. Instal komponen yang direkomendasikan (dipilih) toolset VC++ 2017 v141 (x86, x64) dan Windows 10 SDK (10.0.nnnnn) untuk memastikannya berfungsi. Jika alat yang diperlukan tidak diinstal, proyek tidak akan berhasil dibuat, dan wizard berhenti merespons.
Visual Studio 2017 versi 15.5
Alat Visual C++ Build (sebelumnya tersedia sebagai produk mandiri) sekarang disertakan sebagai beban kerja di alat penginstal Visual Studio. Beban kerja ini hanya menginstal alat yang diperlukan untuk membangun proyek C++ tanpa menginstal ide Visual Studio. Toolset v140 dan v141 disertakan. Toolset v141 berisi peningkatan terbaru di Visual Studio 2017 versi 15.5. Untuk informasi selengkapnya, lihat Visual Studio Build Tools sekarang menyertakan Toolset MSVC VS2017 dan VS2015.
Pengembangan Linux dengan C++
Ekstensi populer Visual C++ untuk Pengembangan Linux sekarang menjadi bagian dari Visual Studio. Penginstalan ini menyediakan semua yang Anda butuhkan untuk mengembangkan dan men-debug aplikasi C++ yang berjalan di lingkungan Linux.
Visual Studio 2017 versi 15.2
Penyempurnaan dilakukan dalam berbagi kode lintas platform dan visualisasi jenis. Untuk informasi selengkapnya, lihat Peningkatan C++ Linux untuk berbagi kode lintas platform dan visualisasi jenis.
Visual Studio 2017 versi 15.5
- Beban kerja Linux menambahkan dukungan untuk rsync sebagai alternatif untuk sftp untuk menyinkronkan file ke komputer Linux jarak jauh.
- Dukungan ditambahkan untuk kompilasi silang yang menargetkan mikrokontroler ARM. Untuk mengaktifkannya dalam penginstalan, pilih pengembangan Linux dengan beban kerja C++ dan pilih opsi untuk Pengembangan IoT dan Tersemat. Opsi ini menambahkan alat kompilasi silang ARM GCC dan Buat ke penginstalan Anda. Untuk informasi selengkapnya, lihat Kompilasi Silang GCC ARM di Visual Studio.
- Dukungan ditambahkan untuk CMake. Anda dapat mengerjakan dasar kode yang ada, yang menggunakan CMake, tanpa harus mengonversinya menjadi proyek Visual Studio. Untuk informasi selengkapnya, lihat Mengonfigurasi Proyek CMake Linux.
- Dukungan ditambahkan untuk menjalankan tugas jarak jauh. Kemampuan ini memungkinkan Anda menjalankan perintah apa pun pada sistem jarak jauh yang ditentukan dalam Connection Manager Visual Studio. Tugas jarak jauh juga menyediakan kemampuan untuk menyalin file ke sistem jarak jauh. Untuk informasi selengkapnya, lihat Mengonfigurasi Proyek CMake Linux.
Visual Studio 2017 versi 15.7
- Berbagai peningkatan skenario beban kerja Linux. Untuk informasi selengkapnya, lihat Peningkatan Beban Kerja Linux C++ ke Sistem Project, Jendela Konsol Linux, rsync, dan Lampirkan ke Proses.
- IntelliSense untuk header pada koneksi Linux jarak jauh. Untuk informasi selengkapnya, lihat IntelliSense untuk Header Linux Jarak Jauh dan Mengonfigurasi Project CMake Linux.
Pengembangan game dengan C++
Gunakan keandalan C++ untuk membangun game profesional yang didukung oleh DirectX atau Cocos2d.
Pengembangan seluler dengan C++ untuk Android dan iOS
Kini Anda dapat membuat dan men-debug aplikasi seluler menggunakan Visual Studio yang dapat menargetkan Android dan iOS.
Aplikasi Universal Windows
C++ hadir sebagai komponen opsional untuk beban kerja Universal Windows App. Saat ini, Anda harus meningkatkan proyek C++ secara manual. Anda dapat membuka proyek Universal Windows Platform yang ditargetkan v140 pada Visual Studio 2017. Namun, Anda perlu memilih toolset platform v141 di halaman properti proyek jika Anda tidak menginstal Visual Studio 2015.
Opsi baru untuk C++ di Universal Windows Platform (UWP)
Anda sekarang memiliki opsi baru untuk menulis dan mengemas aplikasi C++ untuk Universal Windows Platform dan Windows Store: Infrastruktur Desktop Bridge memungkinkan Anda mengemas aplikasi desktop atau objek COM yang ada untuk penyebaran melalui Windows Store. Atau, untuk penyebaran melalui saluran yang ada melalui pemuatan samping. Kemampuan baru dalam Windows 10 memungkinkan Anda menambahkan fungsionalitas UWP ke aplikasi desktop Anda dengan berbagai cara. Untuk mengetahui informasi selengkapnya, lihat Desktop Bridge.
Visual Studio 2017 versi 15.5
Templat proyek Windows Application Packaging Project ditambahkan, yang sangat menyederhanakan pengemasan aplikasi desktop dengan Desktop Bridge. Templat ini tersedia di bagian File | Baru| Proyek | Terinstal| Visual C++ | Universal Windows Platform. Untuk informasi selengkapnya, lihat Mengemas aplikasi menggunakan Visual Studio (Desktop Bridge).
Saat menulis kode baru, Anda sekarang dapat menggunakan C++/WinRT, proyeksi bahasa C++ standar untuk Windows Runtime yang diterapkan hanya dalam file header. Ini memungkinkan Anda untuk menggunakan dan menulis WINDOWS Runtime API menggunakan pengompilasi C++ yang sesuai standar. C++/WinRT dirancang untuk memberi akses kelas satu ke API Windows modern bagi pengembang C++. Untuk informasi selengkapnya, lihat C++/WinRT.
Mulai build 17025 dari Windows SDK Insider Preview, C++/WinRT disertakan dalam Windows SDK. Untuk informasi selengkapnya, lihat C++/WinRT sekarang menyertakan Windows SDK.
Toolset platform Clang/C2
Toolset Clang/C2 yang dikirim dengan Visual Studio 2017 sekarang mendukung switch /bigobj
, yang sangat penting untuk membangun proyek besar. Toolset ini juga mencakup beberapa perbaikan bug penting, baik di front-end maupun back-end pengompilasi.
Analisis kode C++
Pemeriksa Inti C++ untuk memberlakukan Panduan Inti C++ sekarang didistribusikan dengan Visual Studio. Aktifkan pemeriksa di halaman Ekstensi Analisis Kode di halaman properti proyek. Ekstensi kemudian disertakan saat Anda menjalankan analisis kode. Untuk informasi selengkapnya, lihat Menggunakan pemeriksa Panduan Inti C++.
Visual Studio 2017 versi 15.3
- Dukungan ditambahkan untuk aturan yang terkait dengan manajemen sumber daya.
Visual Studio 2017 versi 15.5
Pemeriksaan Panduan Inti C++ baru mencakup kebenaran pointer cerdas, penggunaan penginisialisasi global yang benar, dan penggunaan penandaan konstruksi seperti
goto
dan cast yang buruk.Beberapa nomor peringatan yang mungkin Anda temukan di 15.3 tidak lagi tersedia di 15.5. Peringatan ini diganti dengan pemeriksaan yang lebih spesifik.
Visual Studio 2017 versi 15.6
- Dukungan ditambahkan untuk analisis file tunggal, dan peningkatan dalam performa run-time analisis. Untuk informasi selengkapnya, lihat Peningkatan Analisis Statis C++ untuk Pratinjau Visual Studio 2017 15.6 2
Visual Studio 2017 versi 15.7
- Dukungan ditambahkan untuk
/analyze:ruleset
, yang memungkinkan Anda menentukan aturan analisis kode yang akan dijalankan. - Dukungan ditambahkan untuk aturan Panduan Inti C++ lainnya. Untuk informasi selengkapnya, lihat Menggunakan pemeriksa Panduan Inti C++.
Pengujian unit di Visual Studio 2017
Visual Studio 2017 versi 15.5
Google Test Adapter dan Boost.Test Adapter sekarang tersedia sebagai komponen Pengembangan Desktop dengan beban kerja C++. Keduanya terintegrasi dengan Test Explorer. Dukungan CTest ditambahkan untuk proyek CMake (menggunakan Open Folder), meskipun integrasi penuh dengan Test Explorer belum tersedia. Untuk informasi selengkapnya, lihat Menulis pengujian unit untuk C/C++.
Visual Studio 2017 versi 15.6
- Dukungan ditambahkan untuk dukungan pustaka dinamis
Boost.Test
. - Templat item
Boost.Test
sekarang tersedia di IDE.
Untuk informasi selengkapnya, lihat Boost.Test
Pengujian Unit: Dukungan Pustaka Dinamis dan Templat Item Baru.
Visual Studio 2017 versi 15.7
Dukungan CodeLens ditambahkan untuk proyek pengujian unit C++. Untuk informasi selengkapnya, lihat Mengumumkan CodeLens untuk Pengujian Unit C++.
Diagnostik grafis Visual Studio
Alat Diagnostik Grafis Visual Studio: Anda dapat menggunakannya untuk merekam dan menganalisis masalah rendering dan performa di aplikasi Direct3D. Gunakan di aplikasi yang berjalan secara lokal di PC Windows Anda, di emulator perangkat Windows, atau di PC atau perangkat jarak jauh.
Input & Output untuk shader Vertex dan Geometri: Kemampuan untuk melihat input dan output shader vertex dan shader geometri telah menjadi salah satu fitur yang paling diminta. Sekarang didukung di alat. Pilih tahap VS atau GS dalam tampilan Tahapan Alur untuk mulai memeriksa input dan outputnya dalam tabel di bawah ini.
Cari dan filter dalam tabel objek: Menyediakan cara cepat dan mudah untuk menemukan sumber daya yang Anda cari.
Riwayat Sumber Daya: Tampilan baru ini menyediakan cara yang efisien untuk melihat seluruh riwayat modifikasi sumber daya seperti yang digunakan selama penyajian bingkai yang diambil. Untuk memanggil riwayat sumber daya apa pun, klik ikon jam di samping hyperlink sumber daya apa pun.
Ini menampilkan jendela alat Riwayat Sumber Daya baru, diisi dengan riwayat perubahan sumber daya.
Anda dapat mengambil bingkai dengan penangkapan tumpukan panggilan penuh diaktifkan. Itu memungkinkan Anda dengan cepat menyimpulkan konteks setiap peristiwa perubahan, dan memeriksanya dalam proyek Visual Studio Anda. Atur opsi penangkapan tumpukan lengkap dalam dialog Opsi Alat > Visual Studio di bawah Diagnostik Grafis.
Statistik API: Lihat ringkasan penggunaan API tingkat tinggi dalam bingkai Anda. Ini berguna untuk menemukan panggilan yang mungkin tidak Anda sadari bahwa Anda membuat sama sekali, atau panggilan yang Anda buat terlalu sering. Jendela ini tersedia melalui Lihat > Statistik API di Visual Studio Graphics Analyzer.
Statistik Memori: Lihat berapa banyak memori yang dialokasikan driver untuk sumber daya yang Anda buat dalam bingkai. Jendela ini tersedia melalui Lihat > Statistik Memori di Visual Studio Graphics Analyzer. Untuk menyalin data ke file CSV untuk ditampilkan di spreadsheet, klik kanan dan pilih Salin Semua.
Validasi Bingkai: Daftar kesalahan dan peringatan baru menyediakan cara mudah untuk menavigasi daftar peristiwa Anda berdasarkan potensi masalah yang terdeteksi oleh lapisan debug Direct3D. Klik Lihat > Validasi Bingkai di Visual Studio Graphics Analyzer untuk membuka jendela. Lalu klik Jalankan Validasi untuk memulai analisis. Diperlukan beberapa menit untuk menyelesaikannya, tergantung kompleksitas bingkai.
Analisis Bingkai untuk D3D12: Gunakan Analisis Bingkai untuk menganalisis performa draw-call dengan eksperimen "what-if" yang diarahkan. Beralih ke tab Analisis Bingkai dan jalankan analisis untuk melihat laporan.
Peningkatan Penggunaan GPU: Pelacakan terbuka dapat diambil melalui profiler Penggunaan GPU Visual Studio dengan GPUView atau alat Windows Penganalisis Kinerja (WPA) untuk analisis yang lebih rinci. Jika Anda memiliki Toolkit Performa Windows yang terinstal, ada dua hyperlink: satu untuk WPA dan satu lagi untuk GPUView, di kanan bawah gambaran umum sesi.
Jejak yang Anda buka di GPUView melalui tautan ini mendukung pembesaran dan panning garis waktu VS dan GPUView yang disinkronkan. Kotak centang di VS mengontrol apakah sinkronisasi diaktifkan atau tidak.