Skip to content

[DRAFT - perf test] [Storage Blob] XML deserialization perf combo#46952

Draft
l0lawrence wants to merge 209 commits into
Azure:mainfrom
l0lawrence:storageblob3-perftest
Draft

[DRAFT - perf test] [Storage Blob] XML deserialization perf combo#46952
l0lawrence wants to merge 209 commits into
Azure:mainfrom
l0lawrence:storageblob3-perftest

Conversation

@l0lawrence
Copy link
Copy Markdown
Member

Perf testing branch — Combines three changesets to evaluate XML deserialization performance:

  1. Base: [Storage Blob] Migrating to TypeSpec #45133 (storage blob TypeSpec migration, storageblob3)
  2. Overlay: perf-related _generated/ files from Deserialization Perf Test #46600
  3. Encapsulates: regenerator output from [Python] Speed up xml deserialization microsoft/typespec#10698

Files overlaid from #46600

File Source Lines
_generated/_utils/model_base.py typespec#10698 generator output (XML deserializer helpers, _build_xml_field_plan) +392
_generated/_utils/serialization.py Header deserialization fast path +21
_generated/models/_models.py Regenerated with per-field deserializer= bindings +179/-9
_generated/models/_patch.py Anna's customizations (precomputed defaults, XML field plan) — _asdict shim preserved +29/-6

Intentionally NOT overlaid

  • _generated/operations/_operations.py and aio/operations/_operations.py from Deserialization Perf Test #46600 carry unrelated TypeSpec source drift (parameter reordering, doc rewrites), not perf-related.

Do NOT merge

Draft branch for perf-test benchmarking only.

Refs #45133, #46600, microsoft/typespec#10698.

l0lawrence and others added 24 commits April 20, 2026 12:06
…ndition

MatchConditions.Unconditionally represents the default behavior (no condition
applied), so it should not count as a user-specified access condition.
Previously, the truthy check on match_condition caused Unconditionally to be
treated as a condition, preventing the overwrite=False path from injecting
IfMissing. Also drop the standalone etag check since etag is only meaningful
when paired with a match_condition.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
# Conflicts:
#	sdk/storage/azure-storage-blob/samples/blob_samples_authentication.py
#	sdk/storage/azure-storage-blob/samples/blob_samples_authentication_async.py
#	sdk/storage/azure-storage-blob/samples/blob_samples_batch_delete_blobs.py
#	sdk/storage/azure-storage-blob/samples/blob_samples_client_side_encryption.py
#	sdk/storage/azure-storage-blob/samples/blob_samples_common.py
#	sdk/storage/azure-storage-blob/samples/blob_samples_common_async.py
#	sdk/storage/azure-storage-blob/samples/blob_samples_container_access_policy.py
#	sdk/storage/azure-storage-blob/samples/blob_samples_container_access_policy_async.py
#	sdk/storage/azure-storage-blob/samples/blob_samples_containers.py
#	sdk/storage/azure-storage-blob/samples/blob_samples_containers_async.py
#	sdk/storage/azure-storage-blob/samples/blob_samples_query.py
#	sdk/storage/azure-storage-blob/samples/blob_samples_service.py
#	sdk/storage/azure-storage-blob/samples/blob_samples_service_async.py
#	sdk/storage/azure-storage-blob/samples/blob_samples_walk_blob_hierarchy.py
#	sdk/storage/azure-storage-blob/tests/avro/test_avro.py
#	sdk/storage/azure-storage-blob/tests/avro/test_avro_async.py
#	sdk/storage/azure-storage-blob/tests/encryption_test_helper.py
#	sdk/storage/azure-storage-blob/tests/perfstress_tests/T1_legacy_tests/_test_base_legacy.py
#	sdk/storage/azure-storage-blob/tests/perfstress_tests/T1_legacy_tests/list_blobs.py
#	sdk/storage/azure-storage-blob/tests/perfstress_tests/_test_base.py
#	sdk/storage/azure-storage-blob/tests/perfstress_tests/download_basic.py
#	sdk/storage/azure-storage-blob/tests/perfstress_tests/list_blobs.py
#	sdk/storage/azure-storage-blob/tests/settings/testcase.py
#	sdk/storage/azure-storage-blob/tests/test_append_blob.py
#	sdk/storage/azure-storage-blob/tests/test_append_blob_async.py
#	sdk/storage/azure-storage-blob/tests/test_blob_access_conditions.py
#	sdk/storage/azure-storage-blob/tests/test_blob_access_conditions_async.py
#	sdk/storage/azure-storage-blob/tests/test_blob_client.py
#	sdk/storage/azure-storage-blob/tests/test_blob_client_async.py
#	sdk/storage/azure-storage-blob/tests/test_blob_encryption.py
#	sdk/storage/azure-storage-blob/tests/test_blob_encryption_async.py
#	sdk/storage/azure-storage-blob/tests/test_blob_encryption_v2.py
#	sdk/storage/azure-storage-blob/tests/test_blob_encryption_v2_async.py
#	sdk/storage/azure-storage-blob/tests/test_blob_service_properties.py
#	sdk/storage/azure-storage-blob/tests/test_blob_service_properties_async.py
#	sdk/storage/azure-storage-blob/tests/test_blob_tags.py
#	sdk/storage/azure-storage-blob/tests/test_blob_tags_async.py
#	sdk/storage/azure-storage-blob/tests/test_block_blob.py
#	sdk/storage/azure-storage-blob/tests/test_block_blob_async.py
#	sdk/storage/azure-storage-blob/tests/test_block_blob_sync_copy.py
#	sdk/storage/azure-storage-blob/tests/test_block_blob_sync_copy_async.py
#	sdk/storage/azure-storage-blob/tests/test_common_blob.py
#	sdk/storage/azure-storage-blob/tests/test_common_blob_async.py
#	sdk/storage/azure-storage-blob/tests/test_container.py
#	sdk/storage/azure-storage-blob/tests/test_container_async.py
#	sdk/storage/azure-storage-blob/tests/test_cpk_n.py
#	sdk/storage/azure-storage-blob/tests/test_cpk_n_async.py
#	sdk/storage/azure-storage-blob/tests/test_get_blob.py
#	sdk/storage/azure-storage-blob/tests/test_get_blob_async.py
#	sdk/storage/azure-storage-blob/tests/test_helpers.py
#	sdk/storage/azure-storage-blob/tests/test_large_block_blob.py
#	sdk/storage/azure-storage-blob/tests/test_logging.py
#	sdk/storage/azure-storage-blob/tests/test_logging_async.py
#	sdk/storage/azure-storage-blob/tests/test_page_blob.py
#	sdk/storage/azure-storage-blob/tests/test_page_blob_async.py
#	sdk/storage/azure-storage-blob/tests/test_quick_query.py
#	sdk/storage/azure-storage-blob/tests/test_quick_query_async.py
#	sdk/storage/azure-storage-blob/tests/test_retry.py
#	sdk/storage/azure-storage-blob/tests/test_retry_async.py
#	sdk/storage/azure-storage-blob/tests/test_transports.py
Overlays the perf-related _generated/ changes from PR Azure#46600 (antisch-xmlperf2)
onto the storage blob TypeSpec migration (PR Azure#45133), to evaluate combined perf:

- _generated/_utils/model_base.py: XML deserializer helpers and field-plan
  builder (output of microsoft/typespec PR Azure#10698 generator changes).
- _generated/_utils/serialization.py: Header deserialization fast path.
- _generated/models/_models.py: Regenerated with per-field deserializer
  bindings using the new XML deserializer helpers.
- _generated/models/_patch.py: Anna's customizations (precomputed defaults,
  XML field plan). Preserves the _asdict backcompat shim for Azure CLI/knack.

Operations files intentionally NOT overlaid because Anna's branch carries
unrelated TypeSpec source drift (parameter reordering, doc rewrites).

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@github-actions github-actions Bot added the Storage Storage Service (Queues, Blobs, Files) label May 18, 2026
@l0lawrence
Copy link
Copy Markdown
Member Author

l0lawrence commented May 18, 2026

/azp run python - storage-blob - perf

@azure-pipelines
Copy link
Copy Markdown

No pipelines are associated with this pull request.

@azure-pipelines
Copy link
Copy Markdown

Azure Pipelines successfully started running 1 pipeline(s).

@l0lawrence
Copy link
Copy Markdown
Member Author

/azp run python - storage-blob - perf

@azure-pipelines
Copy link
Copy Markdown

Azure Pipelines successfully started running 1 pipeline(s).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Storage Storage Service (Queues, Blobs, Files)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant