microsoft / microsoft/typespec
ApiManagement bad performance in IDE
- Dominant language
- Java
- Stars
- 5.9k
- Forks
- 394
- Avg merge
- 1d 23h
- Merged PRs (30d)
- 104
Description
New service which is quite big but has not great performance in IDE. Autocomplete takes seconds to show up for example
specification/apimanagement/resource-manager/Microsoft.ApiManagement/ApiManagement/
`--stats` result
```
TypeSpec compiler v1.9.0-dev.3
✔ Compiling
✔ @azure-tools/typespec-autorest 1406ms /
Compilation completed successfully.
Compiler statistics:
Complexity:
Created types: 62367
Finished types: 56124
Performance:
loader: 640ms
resolver: 201ms
checker: 751ms
validation: 197ms
@azure-tools/typespec-azure-core: 0ms
@azure-tools/typespec-client-generator-core: 4ms
@typespec/http: 74ms
@typespec/rest: 13ms
@typespec/versioning: 93ms
compiler: 14ms
linter: 1108ms
@azure-tools/typespec-azure-core/auth-required: 0ms
@azure-tools/typespec-azure-core/byos: 59ms
@azure-tools/typespec-azure-core/casing-style: 5ms
@azure-tools/typespec-azure-core/composition-over-inheritance: 0ms
@azure-tools/typespec-azure-core/documentation-required: 7ms
@azure-tools/typespec-azure-core/friendly-name: 5ms
@azure-tools/typespec-azure-core/key-visibility-required: 1ms
@azure-tools/typespec-azure-core/known-encoding: 2ms
@azure-tools/typespec-azure-core/long-running-polling-operation-required: 3ms
@azure-tools/typespec-azure-core/no-case-mismatch: 2ms
@azure-tools/typespec-azure-core/no-closed-literal-union: 2ms
@azure-tools/typespec-azure-core/no-enum: 0ms
@azure-tools/typespec-azure-core/no-error-status-codes: 1ms
@azure-tools/typespec-azure-core/no-explicit-routes-resource-ops: 1ms
@azure-tools/typespec-azure-core/no-format: 4ms
@azure-tools/typespec-azure-core/no-generic-numeric: 1ms
@azure-tools/typespec-azure-core/no-header-explode: 94ms
@azure-tools/typespec-azure-core/no-legacy-usage: 15ms
@azure-tools/typespec-azure-core/no-multiple-discriminator: 0ms
@azure-tools/typespec-azure-core/no-nullable: 1ms
@azure-tools/typespec-azure-core/no-offsetdatetime: 9ms
@azure-tools/typespec-azure-core/no-openapi: 20ms
@azure-tools/typespec-azure-core/no-private-usage: 20ms
@azure-tools/typespec-azure-core/no-query-explode: 99ms
@azure-tools/typespec-azure-core/no-rest-library-interfaces: 124ms
@azure-tools/typespec-azure-core/no-rpc-path-params: 1ms
@azure-tools/typespec-azure-core/no-string-discriminator: 0ms
@azure-tools/typespec-azure-core/no-unknown: 1ms
@azure-tools/typespec-azure-core/no-unnamed-union: 3ms
@azure-tools/typespec-azure-core/operation-missing-api-version: 2ms
@azure-tools/typespec-azure-core/request-body-problem: 4ms
@azure-tools/typespec-azure-core/require-versioned: 0ms
@azure-tools/typespec-azure-core/response-schema-problem: 110ms
@azure-tools/typespec-azure-core/rpc-operation-request-body: 0ms
@azure-tools/typespec-azure-core/spread-discriminated-model: 1ms
@azure-tools/typespec-azure-resource-manager/arm-common-types-version: 63ms
@azure-tools/typespec-azure-resource-manager/arm-custom-resource-no-key: 0ms
@azure-tools/typespec-azure-resource-manager/arm-custom-resource-usage-discourage: 0ms
@azure-tools/typespec-azure-resource-manager/arm-delete-operation-response-codes: 49ms
@azure-tools/typespec-azure-resource-manager/arm-no-record: 2ms
@azure-tools/typespec-azure-resource-manager/arm-post-operation-response-codes: 6ms
@azure-tools/typespec-azure-resource-manager/arm-put-operation-response-codes: 0ms
@azure-tools/typespec-azure-resource-manager/arm-resource-action-no-segment: 2ms
@azure-tools/typespec-azure-resource-manager/arm-resource-duplicate-property: 1ms
@azure-tools/typespec-azure-resource-manager/arm-resource-interface-requires-decorator: 0ms
@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-action-verb: 1ms
@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-envelope-property: 0ms
@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-version-format: 0ms
@azure-tools/typespec-azure-resource-manager/arm-resource-key-invalid-chars: 1ms
@azure-tools/typespec-azure-resource-manager/arm-resource-name-pattern: 0ms
@azure-tools/typespec-azure-resource-manager/arm-resource-operation: 1ms
@azure-tools/typespec-azure-resource-manager/arm-resource-operation-response: 45ms
@azure-tools/typespec-azure-resource-manager/arm-resource-patch: 2ms
@azure-tools/typespec-azure-resource-manager/arm-resource-path-segment-invalid-chars: 1ms
@azure-tools/typespec-azure-resource-manager/arm-resource-provisioning-state: 1ms
@azure-tools/typespec-azure-resource-manager/beyond-nesting-levels: 0ms
@azure-tools/typespec-azure-resource-manager/empty-updateable-properties: 1ms
@azure-tools/typespec-azure-resource-manager/improper-subscription-list-operation: 0ms
@azure-tools/typespec-azure-resource-manager/lro-location-header: 93ms
@azure-tools/typespec-azure-resource-manager/missing-operations-endpoint: 0ms
@azure-tools/typespec-azure-resource-manager/missing-x-ms-identifiers: 2ms
@azure-tools/typespec-azure-resource-manager/no-empty-model: 0ms
@azure-tools/typespec-azure-resource-manager/no-resource-delete-operation: 2ms
@azure-tools/typespec-azure-resource-manager/no-response-body: 144ms
@azure-tools/typespec-azure-resource-manager/patch-envelope: 1ms
@azure-tools/typespec-azure-resource-manager/resource-name: 1ms
@azure-tools/typespec-azure-resource-manager/secret-prop: 14ms
@azure-tools/typespec-azure-resource-manager/unsupported-type: 2ms
@azure-tools/typespec-client-generator-core/property-name-conflict: 9ms
@azure-tools/typespec-client-generator-core/require-client-suffix: 12ms
emit: 1406ms
@azure-tools/typespec-autorest: 1406ms
```
There is also probably some optiomization so it doesn't take that long to compile. Some linting rule seems like they should be able to be sped up
This I think is a good spec to use as a benchmark for improving performance in the LSP and compiler
Contributor guide
Assessment
This issue has not been assessed yet.