Skip to content

[BC Break] Practical design: Concrete classes and benchmarking #2

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
gabbydgab opened this issue Jan 10, 2017 · 4 comments
Open

[BC Break] Practical design: Concrete classes and benchmarking #2

gabbydgab opened this issue Jan 10, 2017 · 4 comments

Comments

@gabbydgab
Copy link
Contributor

gabbydgab commented Jan 10, 2017

Currently, ArrayUtils class has many responsibility, thus breaking it into specific usage will open more opportunities to enhance its features - also to properly benchmark edge cases of each functionality (e.g. caching validation and array merging strategies)

Responsibilities

  1. Validation Strategies
    • hasStringKey
    • hasIntegerKey
    • hasNumericKeys
    • isList
    • isHashTable
    • isCachable (proposed/new feature)
  2. Merging Strategies
    • Integer and String Keys
    • Integer and String With Preserved Numeric Keys
    • Recursive Merging
    • Merging with Null arrays
    • Replacing/Removing Keys
    • Prioritized Merging (proposed/new feature)
  3. Filtering Strategies
    • Without key filtering
    • Key specific filtering
    • With and without key filtering
  4. Iterator to Array Conversion Strategies
    • Simple Iterator
    • Recursive Iterator

Benchmarking

Benchmarking the merging and caching strategies is a MUST.

One way of validating performance issue is to benchmark, especially, configuration from Zend\ServiceManager, Zend\View, Zend\Router, etc.

@gabbydgab
Copy link
Contributor Author

@Ocramius @weierophinney Thoughts?

@Ocramius
Copy link
Contributor

@gabbydgab stop any dev work: if this is a split, just make it a split and stop there, with 0 API and functional changes. Further dev to be done once it is under the organisation again.

@gabbydgab
Copy link
Contributor Author

gabbydgab commented Jan 10, 2017

@Ocramius yes, already split the library and tagged it as version 0.1.x (same with master) - including the initial benchmarks (version 0.1.1). With regards to benchmarks, I would like to update them using a practical configuration - larger from what is being tested. Probably will add it as version 0.1.2.

I'm waiting for @weierophinney approval to transfer this repository back to the organization.

I'll be adding more issues that might be needed, like sorting, search and merging by priority.

@Ocramius
Copy link
Contributor

Ocramius commented Jan 10, 2017 via email

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants